@@ -13,12 +13,12 @@ macro_rules! one_of (
13
13
use $crate:: InputIter ;
14
14
15
15
match ( $i) . iter_elements( ) . next( ) . map( |c| {
16
- c . find_token( $inp)
16
+ ( c , c . find_token( $inp) )
17
17
} ) {
18
- None => $crate:: IResult :: Incomplete :: <_, _>( $crate:: Needed :: Size ( 1 ) ) ,
19
- Some ( false ) => $crate:: IResult :: Error ( error_position!( $crate:: ErrorKind :: OneOf , $i) ) ,
18
+ None => $crate:: IResult :: Incomplete :: <_, _>( $crate:: Needed :: Size ( 1 ) ) ,
19
+ Some ( ( _ , false ) ) => $crate:: IResult :: Error ( error_position!( $crate:: ErrorKind :: OneOf , $i) ) ,
20
20
//the unwrap should be safe here
21
- Some ( true ) => $crate:: IResult :: Done ( $i. slice( 1 ..) , $i. iter_elements( ) . next( ) . unwrap( ) . as_char( ) )
21
+ Some ( ( c , true ) ) => $crate:: IResult :: Done ( $i. slice( c . len ( ) ..) , $i. iter_elements( ) . next( ) . unwrap( ) . as_char( ) )
22
22
}
23
23
}
24
24
) ;
@@ -35,12 +35,12 @@ macro_rules! none_of (
35
35
use $crate:: InputIter ;
36
36
37
37
match ( $i) . iter_elements( ) . next( ) . map( |c| {
38
- !c. find_token( $inp)
38
+ ( c , !c. find_token( $inp) )
39
39
} ) {
40
- None => $crate:: IResult :: Incomplete :: <_, _>( $crate:: Needed :: Size ( 1 ) ) ,
41
- Some ( false ) => $crate:: IResult :: Error ( error_position!( $crate:: ErrorKind :: NoneOf , $i) ) ,
40
+ None => $crate:: IResult :: Incomplete :: <_, _>( $crate:: Needed :: Size ( 1 ) ) ,
41
+ Some ( ( _ , false ) ) => $crate:: IResult :: Error ( error_position!( $crate:: ErrorKind :: NoneOf , $i) ) ,
42
42
//the unwrap should be safe here
43
- Some ( true ) => $crate:: IResult :: Done ( $i. slice( 1 ..) , $i. iter_elements( ) . next( ) . unwrap( ) . as_char( ) )
43
+ Some ( ( c , true ) ) => $crate:: IResult :: Done ( $i. slice( c . len ( ) ..) , $i. iter_elements( ) . next( ) . unwrap( ) . as_char( ) )
44
44
}
45
45
}
46
46
) ;
@@ -56,12 +56,12 @@ macro_rules! char (
56
56
use $crate:: InputIter ;
57
57
58
58
match ( $i) . iter_elements( ) . next( ) . map( |c| {
59
- c . as_char( ) == $c
59
+ ( c , c . as_char( ) == $c)
60
60
} ) {
61
- None => $crate:: IResult :: Incomplete :: <_, _>( $crate:: Needed :: Size ( 1 ) ) ,
62
- Some ( false ) => $crate:: IResult :: Error ( error_position!( $crate:: ErrorKind :: Char , $i) ) ,
61
+ None => $crate:: IResult :: Incomplete :: <_, _>( $crate:: Needed :: Size ( 1 ) ) ,
62
+ Some ( ( _ , false ) ) => $crate:: IResult :: Error ( error_position!( $crate:: ErrorKind :: Char , $i) ) ,
63
63
//the unwrap should be safe here
64
- Some ( true ) => $crate:: IResult :: Done ( $i. slice( 1 ..) , $i. iter_elements( ) . next( ) . unwrap( ) . as_char( ) )
64
+ Some ( ( c , true ) ) => $crate:: IResult :: Done ( $i. slice( c . len ( ) ..) , $i. iter_elements( ) . next( ) . unwrap( ) . as_char( ) )
65
65
}
66
66
}
67
67
) ;
@@ -93,6 +93,12 @@ mod tests {
93
93
94
94
let b = & b"cde" [ ..] ;
95
95
assert_eq ! ( f( b) , Error ( error_position!( ErrorKind :: OneOf , b) ) ) ;
96
+
97
+ named ! ( utf8( & str ) -> char ,
98
+ one_of!( "+\u{FF0B} " ) ) ;
99
+
100
+ assert ! ( utf8( "+" ) . is_done( ) ) ;
101
+ assert ! ( utf8( "\u{FF0B} " ) . is_done( ) ) ;
96
102
}
97
103
98
104
#[ test]
0 commit comments