There's more...

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 parsing number_of_clicks and total_time_played, expect the NumberOfClicks and TotalTimePlayed keys to be called. Other possible case conventions than PascalCase that Serde supports are lowercase, camelCase, and SCREAMING_SNAKE_CASE.

There are many different and useful attributes. If you want to, you can familiarize yourself with them at https://serde.rs/attributes.html.

You can use Serde to provide idiomatic serialization and deserialization, however, discussing all best practices would cover an entire chapter on its own. If you want to delve into such things, Serde has a nice write-up on how to do it at https://serde.rs/data-format.html.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.21.43.26