Serde gives you the ability to tweak the serialization process somewhat by annotating your fields. For example, you can give a field a standard value if it wasn't able to be parsed by writing #[serde(default)] above its declaration. In a struct, it would look like this:
#[derive(Serialize, Deserialize)]
struct Foo {
bar: i32,
#[serde(default)]
baz: i32,
}
If baz hasn't been parsed, its Default::default value (See Chapter 1, Learning the Basics; Providing a default implementation) will be used. Another useful thing you can do with annotations is changed the expected case convention. By default, Serde will expect Rust's snake_case, however, you can change this by annotating a struct or enum with #[serde(rename_all = "PascalCase")]. You can use it on a struct like this:
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
struct Stats {
number_of_clicks: i32,
total_time_played: i32,
}
This would, instead of...