Skip to content

Commit 91aa40e

Browse files
committed
Add ui test of unsatisfied serde trait bound
1 parent 595019e commit 91aa40e

File tree

2 files changed

+74
-0
lines changed

2 files changed

+74
-0
lines changed
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
use serde::de::Deserialize;
2+
use serde::ser::Serialize;
3+
4+
fn to_string<T>(_: &T) -> String
5+
where
6+
T: Serialize,
7+
{
8+
unimplemented!()
9+
}
10+
11+
fn from_str<'de, T>(_: &'de str) -> T
12+
where
13+
T: Deserialize<'de>,
14+
{
15+
unimplemented!()
16+
}
17+
18+
struct MyStruct;
19+
20+
fn main() {
21+
to_string(&MyStruct);
22+
let _: MyStruct = from_str("");
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
error[E0277]: the trait bound `MyStruct: Serialize` is not satisfied
2+
--> tests/ui/on_unimplemented.rs:21:15
3+
|
4+
21 | to_string(&MyStruct);
5+
| --------- ^^^^^^^^^ the trait `Serialize` is not implemented for `MyStruct`
6+
| |
7+
| required by a bound introduced by this call
8+
|
9+
= help: the following other types implement trait `Serialize`:
10+
&'a T
11+
&'a mut T
12+
()
13+
(T,)
14+
(T0, T1)
15+
(T0, T1, T2)
16+
(T0, T1, T2, T3)
17+
(T0, T1, T2, T3, T4)
18+
and $N others
19+
note: required by a bound in `to_string`
20+
--> tests/ui/on_unimplemented.rs:6:8
21+
|
22+
4 | fn to_string<T>(_: &T) -> String
23+
| --------- required by a bound in this function
24+
5 | where
25+
6 | T: Serialize,
26+
| ^^^^^^^^^ required by this bound in `to_string`
27+
28+
error[E0277]: the trait bound `MyStruct: Deserialize<'_>` is not satisfied
29+
--> tests/ui/on_unimplemented.rs:22:23
30+
|
31+
22 | let _: MyStruct = from_str("");
32+
| ^^^^^^^^^^^^ the trait `Deserialize<'_>` is not implemented for `MyStruct`
33+
|
34+
= help: the following other types implement trait `Deserialize<'de>`:
35+
&'a Path
36+
&'a [u8]
37+
&'a str
38+
()
39+
(T,)
40+
(T0, T1)
41+
(T0, T1, T2)
42+
(T0, T1, T2, T3)
43+
and $N others
44+
note: required by a bound in `from_str`
45+
--> tests/ui/on_unimplemented.rs:13:8
46+
|
47+
11 | fn from_str<'de, T>(_: &'de str) -> T
48+
| -------- required by a bound in this function
49+
12 | where
50+
13 | T: Deserialize<'de>,
51+
| ^^^^^^^^^^^^^^^^ required by this bound in `from_str`

0 commit comments

Comments
 (0)