[rust] implement first/last on vector-like things
#3822
Merged
+56
−9
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.
Using prism in
rubyfmthas shown up a number of places where we have to dov.iter().next().unwrap()or similar. Usingv.iter().last().unwrap()is also pretty sad, because we're asking the compiler to generate a loop for something that should be a simple memory load.std::vec::Vecimplements these little helper functions, so we might as well implement them on vector-like things here, too.Note that the
NodeListfunctions can't beconstbecauseNode::newcan panic, which means thatNode::newcannot beconst.cc @reese