File tree Expand file tree Collapse file tree 2 files changed +14
-0
lines changed Expand file tree Collapse file tree 2 files changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -814,6 +814,14 @@ fn test_iterator_clone() {
814814 assert ! ( it. clone( ) . zip( it) . all( |( x, y) | x == y) ) ;
815815}
816816
817+ #[ test]
818+ fn test_iterator_last ( ) {
819+ let s = "ศไทย中华Việt Nam" ;
820+ let mut it = s. chars ( ) ;
821+ it. next ( ) ;
822+ assert_eq ! ( it. last( ) , Some ( 'm' ) ) ;
823+ }
824+
817825#[ test]
818826fn test_bytesator ( ) {
819827 let s = "ศไทย中华Việt Nam" ;
Original file line number Diff line number Diff line change @@ -432,6 +432,12 @@ impl<'a> Iterator for Chars<'a> {
432432 // `isize::MAX` (that's well below `usize::MAX`).
433433 ( ( len + 3 ) / 4 , Some ( len) )
434434 }
435+
436+ #[ inline]
437+ fn last ( mut self ) -> Option < char > {
438+ // No need to go through the entire string.
439+ self . next_back ( )
440+ }
435441}
436442
437443#[ stable( feature = "rust1" , since = "1.0.0" ) ]
You can’t perform that action at this time.
0 commit comments