]>
Commit | Line | Data |
---|---|---|
0bf4aa26 XL |
1 | trait Deserialize<'de> {} |
2 | ||
3 | trait DeserializeOwned: for<'de> Deserialize<'de> {} | |
4 | impl<T> DeserializeOwned for T where T: for<'de> Deserialize<'de> {} | |
5 | ||
6 | // Based on this impl, `&'static str` only implements Deserialize<'static>. | |
7 | // It does not implement for<'de> Deserialize<'de>. | |
8 | impl<'de: 'a, 'a> Deserialize<'de> for &'a str {} | |
9 | ||
10 | fn main() { | |
11 | // Then why does it implement DeserializeOwned? This compiles. | |
12 | fn assert_deserialize_owned<T: DeserializeOwned>() {} | |
13 | assert_deserialize_owned::<&'static str>(); | |
0731742a | 14 | //~^ ERROR not general enough |
0bf4aa26 XL |
15 | |
16 | // It correctly does not implement for<'de> Deserialize<'de>. | |
17 | //fn assert_hrtb<T: for<'de> Deserialize<'de>>() {} | |
18 | //assert_hrtb::<&'static str>(); | |
19 | } |