@@ -17,19 +17,19 @@ pub enum JsonValue {
17
17
Object ( HashMap < String , JsonValue > )
18
18
}
19
19
20
- fn space ( ) -> Parser < u8 , ( ) > {
20
+ fn space ( ) -> Parser < ' static , u8 , ( ) > {
21
21
one_of ( b" \t \r \n " ) . repeat ( 0 ..) . discard ( )
22
22
}
23
23
24
- fn number ( ) -> Parser < u8 , f64 > {
24
+ fn number ( ) -> Parser < ' static , u8 , f64 > {
25
25
let integer = one_of ( b"123456789" ) - one_of ( b"0123456789" ) . repeat ( 0 ..) | sym ( b'0' ) ;
26
26
let frac = sym ( b'.' ) + one_of ( b"0123456789" ) . repeat ( 1 ..) ;
27
27
let exp = one_of ( b"eE" ) + one_of ( b"+-" ) . opt ( ) + one_of ( b"0123456789" ) . repeat ( 1 ..) ;
28
28
let number = sym ( b'-' ) . opt ( ) + integer + frac. opt ( ) + exp. opt ( ) ;
29
29
number. collect ( ) . map ( |v|String :: from_utf8 ( v) . unwrap ( ) ) . map ( |s|f64:: from_str ( & s) . unwrap ( ) )
30
30
}
31
31
32
- fn string ( ) -> Parser < u8 , String > {
32
+ fn string ( ) -> Parser < ' static , u8 , String > {
33
33
let special_char = sym ( b'\\' ) | sym ( b'/' ) | sym ( b'"' )
34
34
| sym ( b'b' ) . map ( |_|b'\x08' ) | sym ( b'f' ) . map ( |_|b'\x0C' )
35
35
| sym ( b'n' ) . map ( |_|b'\n' ) | sym ( b'r' ) . map ( |_|b'\r' ) | sym ( b't' ) . map ( |_|b'\t' ) ;
@@ -41,20 +41,20 @@ fn string() -> Parser<u8, String> {
41
41
string. map ( |strings|strings. concat ( ) )
42
42
}
43
43
44
- fn array ( ) -> Parser < u8 , Vec < JsonValue > > {
44
+ fn array ( ) -> Parser < ' static , u8 , Vec < JsonValue > > {
45
45
let elems = list ( call ( value) , sym ( b',' ) * space ( ) ) ;
46
46
let arr = sym ( b'[' ) * space ( ) * elems. opt ( ) - sym ( b']' ) ;
47
47
arr. map ( |elems|elems. unwrap_or ( vec ! [ ] ) )
48
48
}
49
49
50
- fn object ( ) -> Parser < u8 , HashMap < String , JsonValue > > {
50
+ fn object ( ) -> Parser < ' static , u8 , HashMap < String , JsonValue > > {
51
51
let member = string ( ) - space ( ) - sym ( b':' ) - space ( ) + call ( value) ;
52
52
let members = list ( member, sym ( b',' ) * space ( ) ) ;
53
53
let obj = sym ( b'{' ) * space ( ) * members. opt ( ) - sym ( b'}' ) ;
54
54
obj. map ( |members|members. unwrap_or ( vec ! [ ] ) . into_iter ( ) . collect :: < HashMap < _ , _ > > ( ) )
55
55
}
56
56
57
- fn value ( ) -> Parser < u8 , JsonValue > {
57
+ fn value ( ) -> Parser < ' static , u8 , JsonValue > {
58
58
( seq ( b"null" ) . map ( |_|JsonValue :: Null )
59
59
| seq ( b"true" ) . map ( |_|JsonValue :: Bool ( true ) )
60
60
| seq ( b"false" ) . map ( |_|JsonValue :: Bool ( false ) )
@@ -65,7 +65,7 @@ fn value() -> Parser<u8, JsonValue> {
65
65
) - space ( )
66
66
}
67
67
68
- pub fn json ( ) -> Parser < u8 , JsonValue > {
68
+ pub fn json ( ) -> Parser < ' static , u8 , JsonValue > {
69
69
space ( ) * value ( ) - end ( )
70
70
}
71
71
0 commit comments