File tree Expand file tree Collapse file tree 1 file changed +20
-4
lines changed Expand file tree Collapse file tree 1 file changed +20
-4
lines changed Original file line number Diff line number Diff line change @@ -552,21 +552,25 @@ impl Iterator for EscapeDefault {
552
552
EscapeDefaultState :: Backslash ( c) => c,
553
553
EscapeDefaultState :: Char ( c) => c,
554
554
EscapeDefaultState :: Done => return None ,
555
- EscapeDefaultState :: Unicode ( ref mut i) => return iter . nth ( n) ,
555
+ EscapeDefaultState :: Unicode ( ref mut i) => return i . nth ( n) ,
556
556
} ;
557
557
558
- let start = self . get_offset ( ) ;
558
+ let start = if let Some ( x) = self . get_offset ( ) {
559
+ x
560
+ } else {
561
+ return None ;
562
+ } ;
559
563
let idx = start + n;
560
564
561
565
// Update state
562
566
self . state = match idx {
563
- 0 => EscapeDefaultState :: Char ( c ) ,
567
+ 0 => EscapeDefaultState :: Char ( ch ) ,
564
568
_ => EscapeDefaultState :: Done ,
565
569
} ;
566
570
567
571
match idx {
568
572
0 => Some ( '\\' ) ,
569
- 1 => Some ( c ) ,
573
+ 1 => Some ( ch ) ,
570
574
_ => None ,
571
575
}
572
576
}
@@ -580,6 +584,18 @@ impl Iterator for EscapeDefault {
580
584
}
581
585
}
582
586
587
+ #[ test]
588
+ fn ed_iterator_specializations ( ) {
589
+ use super :: EscapeDefault ;
590
+
591
+ /// Check counting
592
+ assert_eq ! ( '\n' . escape_default( ) . count( ) , 2 ) ;
593
+ assert_eq ! ( 'c' . escape_default( ) . count( ) , 1 ) ;
594
+ assert_eq ! ( ' ' . escape_default( ) . count( ) , 1 ) ;
595
+ assert_eq ! ( '\\' . escape_default( ) . count( ) , 2 ) ;
596
+ }
597
+
598
+
583
599
impl EscapeDefault {
584
600
fn get_offset ( & self ) -> Option < usize > {
585
601
match self . state {
You can’t perform that action at this time.
0 commit comments