Skip to content

Commit 8115ab1

Browse files
authored
Merge pull request #13 from programble/safe-node-id
Expose NodeId directly and safely Closes #12.
2 parents 6983d6e + 1e097cc commit 8115ab1

File tree

6 files changed

+197
-269
lines changed

6 files changed

+197
-269
lines changed

src/iter.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::{slice, vec};
22
use std::ops::Range;
33

4-
use {Tree, Id, Node, NodeRef};
4+
use {Tree, NodeId, Node, NodeRef};
55

66
/// Iterator that moves out of a tree in insert order.
77
#[derive(Debug)]
@@ -80,15 +80,15 @@ impl<'a, T: 'a> ExactSizeIterator for Nodes<'a, T> { }
8080
impl<'a, T: 'a> Iterator for Nodes<'a, T> {
8181
type Item = NodeRef<'a, T>;
8282
fn next(&mut self) -> Option<Self::Item> {
83-
self.iter.next().map(|i| self.tree.node_ref(Id(i)))
83+
self.iter.next().map(|i| unsafe { self.tree.get_unchecked(NodeId(i)) })
8484
}
8585
fn size_hint(&self) -> (usize, Option<usize>) {
8686
self.iter.size_hint()
8787
}
8888
}
8989
impl<'a, T: 'a> DoubleEndedIterator for Nodes<'a, T> {
9090
fn next_back(&mut self) -> Option<Self::Item> {
91-
self.iter.next_back().map(|i| self.tree.node_ref(Id(i)))
91+
self.iter.next_back().map(|i| unsafe { self.tree.get_unchecked(NodeId(i)) })
9292
}
9393
}
9494

0 commit comments

Comments
 (0)