Skip to content

Commit 50594bd

Browse files
committed
Fix extra_requirement_in_impl issue
See rust-lang/rust#37166
1 parent 19c74ae commit 50594bd

File tree

4 files changed

+60
-87
lines changed

4 files changed

+60
-87
lines changed

examples/json.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,19 @@ pub enum JsonValue {
1717
Object(HashMap<String,JsonValue>)
1818
}
1919

20-
fn space() -> Parser<u8, ()> {
20+
fn space() -> Parser<'static, u8, ()> {
2121
one_of(b" \t\r\n").repeat(0..).discard()
2222
}
2323

24-
fn number() -> Parser<u8, f64> {
24+
fn number() -> Parser<'static, u8, f64> {
2525
let integer = one_of(b"123456789") - one_of(b"0123456789").repeat(0..) | sym(b'0');
2626
let frac = sym(b'.') + one_of(b"0123456789").repeat(1..);
2727
let exp = one_of(b"eE") + one_of(b"+-").opt() + one_of(b"0123456789").repeat(1..);
2828
let number = sym(b'-').opt() + integer + frac.opt() + exp.opt();
2929
number.collect().map(|v|String::from_utf8(v).unwrap()).map(|s|f64::from_str(&s).unwrap())
3030
}
3131

32-
fn string() -> Parser<u8, String> {
32+
fn string() -> Parser<'static, u8, String> {
3333
let special_char = sym(b'\\') | sym(b'/') | sym(b'"')
3434
| sym(b'b').map(|_|b'\x08') | sym(b'f').map(|_|b'\x0C')
3535
| 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> {
4141
string.map(|strings|strings.concat())
4242
}
4343

44-
fn array() -> Parser<u8, Vec<JsonValue>> {
44+
fn array() -> Parser<'static, u8, Vec<JsonValue>> {
4545
let elems = list(call(value), sym(b',') * space());
4646
let arr = sym(b'[') * space() * elems.opt() - sym(b']');
4747
arr.map(|elems|elems.unwrap_or(vec![]))
4848
}
4949

50-
fn object() -> Parser<u8, HashMap<String, JsonValue>> {
50+
fn object() -> Parser<'static, u8, HashMap<String, JsonValue>> {
5151
let member = string() - space() - sym(b':') - space() + call(value);
5252
let members = list(member, sym(b',') * space());
5353
let obj = sym(b'{') * space() * members.opt() - sym(b'}');
5454
obj.map(|members|members.unwrap_or(vec![]).into_iter().collect::<HashMap<_,_>>())
5555
}
5656

57-
fn value() -> Parser<u8, JsonValue> {
57+
fn value() -> Parser<'static, u8, JsonValue> {
5858
( seq(b"null").map(|_|JsonValue::Null)
5959
| seq(b"true").map(|_|JsonValue::Bool(true))
6060
| seq(b"false").map(|_|JsonValue::Bool(false))
@@ -65,7 +65,7 @@ fn value() -> Parser<u8, JsonValue> {
6565
) - space()
6666
}
6767

68-
pub fn json() -> Parser<u8, JsonValue> {
68+
pub fn json() -> Parser<'static, u8, JsonValue> {
6969
space() * value() - end()
7070
}
7171

examples/json_char.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,19 @@ pub enum JsonValue {
1717
Object(HashMap<String,JsonValue>)
1818
}
1919

20-
fn space() -> Parser<char, ()> {
20+
fn space() -> Parser<'static, char, ()> {
2121
one_of(" \t\r\n").repeat(0..).discard()
2222
}
2323

24-
fn number() -> Parser<char, f64> {
24+
fn number() -> Parser<'static, char, f64> {
2525
let integer = one_of("123456789") - one_of("0123456789").repeat(0..) | sym('0');
2626
let frac = sym('.') + one_of("0123456789").repeat(1..);
2727
let exp = one_of("eE") + one_of("+-").opt() + one_of("0123456789").repeat(1..);
2828
let number = sym('-').opt() + integer + frac.opt() + exp.opt();
2929
number.collect().map(|v|String::from_iter(v)).map(|s|f64::from_str(&s).unwrap())
3030
}
3131

32-
fn string() -> Parser<char, String> {
32+
fn string() -> Parser<'static, char, String> {
3333
let special_char = sym('\\') | sym('/') | sym('"')
3434
| sym('b').map(|_|'\x08') | sym('f').map(|_|'\x0C')
3535
| sym('n').map(|_|'\n') | sym('r').map(|_|'\r') | sym('t').map(|_|'\t');
@@ -41,20 +41,20 @@ fn string() -> Parser<char, String> {
4141
string.map(|strings|strings.concat())
4242
}
4343

44-
fn array() -> Parser<char, Vec<JsonValue>> {
44+
fn array() -> Parser<'static, char, Vec<JsonValue>> {
4545
let elems = list(call(value), sym(',') * space());
4646
let arr = sym('[') * space() * elems.opt() - sym(']');
4747
arr.map(|elems|elems.unwrap_or(vec![]))
4848
}
4949

50-
fn object() -> Parser<char, HashMap<String, JsonValue>> {
50+
fn object() -> Parser<'static, char, HashMap<String, JsonValue>> {
5151
let member = string() - space() - sym(':') - space() + call(value);
5252
let members = list(member, sym(',') * space());
5353
let obj = sym('{') * space() * members.opt() - sym('}');
5454
obj.map(|members|members.unwrap_or(vec![]).into_iter().collect::<HashMap<_,_>>())
5555
}
5656

57-
fn value() -> Parser<char, JsonValue> {
57+
fn value() -> Parser<'static, char, JsonValue> {
5858
( seq("null").map(|_|JsonValue::Null)
5959
| seq("true").map(|_|JsonValue::Bool(true))
6060
| seq("false").map(|_|JsonValue::Bool(false))
@@ -65,7 +65,7 @@ fn value() -> Parser<char, JsonValue> {
6565
) - space()
6666
}
6767

68-
pub fn json() -> Parser<char, JsonValue> {
68+
pub fn json() -> Parser<'static, char, JsonValue> {
6969
space() * value() - end()
7070
}
7171

src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#![feature(loop_break_value)]
22
#![feature(collections_range)]
33
#![feature(collections_bound)]
4-
#![allow(extra_requirement_in_impl)]
54

65
mod input;
76
mod result;

0 commit comments

Comments
 (0)