Decrusting the serde crate
Channel: Jon Gjengset
Date: 2022-12-17

In this stream, we peel back the crust on the serde crate — https://github.com/serde-rs/serde/ — and explore its interface, structure, and mechanisms. We talk about Serialize/Deserialize, Serializer/Deserializer, and the Visitor trait. We also get into the serde data model, and in particular the separation between data types, serde data values, and data formats.

For more details about serde, see https://serde.rs/.

I use `cargo expand` extensively in this video, which you can find here: https://github.com/dtolnay/cargo-expand

The streaming calendar is at https://calendar.google.com/calendar/u/0?cid=NzE5YjZjZjA4YTlmMTFkYTRhNzMyMDgzYTQzYWEwMGE2MWE3OTQzZWE4NjRhNTc0MTdiNWRhMTNiMWZjOGNjYkBncm91cC5jYWxlbmRhci5nb29nbGUuY29t, with some other formats listed in https://twitter.com/jonhoo/status/1602067723986513920.

0:00:00 Introduction to "decrusted"
0:01:51 Regular streaming schedule
0:02:43 serde
0:04:28 The serde data model
0:14:51 Exploring serde's derived impls
0:17:05 Derived impl Serialize
0:27:56 Derived impl Deserialize
0:53:55 serde derive attributes
1:02:50 (De)serializing enum variants
1:07:31 Enum variant representations
1:24:32 Variant attributes
1:25:54 serde(borrow)
1:38:43 Writing data formats
1:49:48 Closing thoughts

Live version with chat: https://youtu.be/9oVIyNiAiss