1 use serde_derive::Deserialize;
2
3 // No errors expected.
4 #[derive(Deserialize)]
5 struct T0(u8, u8);
6
7 // No errors expected:
8 // - If both fields are provided, both get value from data.
9 // - If only one field is provided, the second gets default value.
10 #[derive(Deserialize)]
11 struct T1(u8, #[serde(default)] u8);
12
13 // ERROR: The first field can get default value only if sequence is empty, but
14 // that mean that all other fields cannot be deserialized without errors.
15 #[derive(Deserialize)]
16 struct T2(#[serde(default)] u8, u8, u8);
17
18 // No errors expected:
19 // - If both fields are provided, both get value from data.
20 // - If only one field is provided, the second gets default value.
21 // - If no fields are provided, both get default value.
22 #[derive(Deserialize)]
23 struct T3(#[serde(default)] u8, #[serde(default)] u8);
24
25 ////////////////////////////////////////////////////////////////////////////////
26
27 // No errors expected -- missing fields get default values.
28 #[derive(Deserialize, Default)]
29 #[serde(default)]
30 struct T4(u8, u8);
31
32 // No errors expected -- missing fields get default values.
33 #[derive(Deserialize, Default)]
34 #[serde(default)]
35 struct T5(#[serde(default)] u8, u8);
36
37 // No errors expected -- missing fields get default values.
38 #[derive(Deserialize, Default)]
39 #[serde(default)]
40 struct T6(u8, #[serde(default)] u8);
41
42 // No errors expected -- missing fields get default values.
43 #[derive(Deserialize, Default)]
44 #[serde(default)]
45 struct T7(#[serde(default)] u8, #[serde(default)] u8);
46
main()47 fn main() {}
48