File tree 1 file changed +26
-0
lines changed
1 file changed +26
-0
lines changed Original file line number Diff line number Diff line change 55
55
all_between, any_between,
56
56
map,
57
57
each,
58
+ each_char,
58
59
bytes_iter,
59
60
chars_iter,
60
61
split_char_iter,
@@ -635,6 +636,18 @@ fn each(s: str, it: fn(u8) -> bool) {
635
636
}
636
637
}
637
638
639
+ #[ doc = "Iterates over the chars in a string" ]
640
+ #[ inline( always) ]
641
+ fn each_char ( s : str , it : fn ( char ) -> bool ) {
642
+ let mut pos = 0 u;
643
+ let len = len ( s) ;
644
+ while pos < len {
645
+ let { ch, next} = char_range_at ( s, pos) ;
646
+ pos = next;
647
+ if !it ( ch) { break ; }
648
+ }
649
+ }
650
+
638
651
#[ doc = "Iterate over the characters in a string" ]
639
652
fn chars_iter ( s : str , it : fn ( char ) ) {
640
653
let mut pos = 0 u;
@@ -2669,4 +2682,17 @@ mod tests {
2669
2682
assert to_utf16( from_utf16 ( u) ) == u;
2670
2683
}
2671
2684
}
2685
+
2686
+ #[ test]
2687
+ fn test_each_char ( ) {
2688
+ let s = "abc" ;
2689
+ let mut found_b = false ;
2690
+ for each_char( s) { |ch|
2691
+ if ch == 'b' {
2692
+ found_b = true ;
2693
+ break ;
2694
+ }
2695
+ }
2696
+ assert found_b;
2697
+ }
2672
2698
}
You can’t perform that action at this time.
0 commit comments