Implement DoubleEndedIterator
for some iterator structs
#107
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Note
This PR is a semi-draft; I want to hear some feedback before I start refining the code.
Changes:
DoubleEndedIterator
for some of the iterator structstraverse.rs
using a new macro that replacesimpl_node_iterator!
completelyFusedIterator
for everything using the new macro, just to be safe (may be re-implemented if the current changes adhere toFusedIterator
's contract)ReverseChildren
sinceChildren::rev()
is more idiomatic.There is an edge-case for when I need to get first/last root node from the arena, in which case I resorted to
iter().next()
anditer().last()
, which I don't think is efficient. If you have any suggestions, I'd be happy to hear them.