X-Git-Url: https://piware.de/gitweb/?p=learn-rust.git;a=blobdiff_plain;f=serde%2Fsrc%2Fmain.rs;fp=serde%2Fsrc%2Fmain.rs;h=0c9efe90216132d2a0ff01f57352f24279c3aa07;hp=0000000000000000000000000000000000000000;hb=6b86f7f9dc3b179a09341af581e7af8b518beedc;hpb=4b27e7395888e450ce52e74bf259715105f3071c diff --git a/serde/src/main.rs b/serde/src/main.rs new file mode 100644 index 0000000..0c9efe9 --- /dev/null +++ b/serde/src/main.rs @@ -0,0 +1,36 @@ +use serde::{Serialize, Deserialize}; + +#[derive(Serialize, Deserialize, Debug)] +enum Social { + Twitter(String), + ICQ(u64), + Nothing, +} + +#[derive(Serialize, Deserialize, Debug)] +struct Contact { + name: String, + phone: u32, + social: Social, +} + +type Contacts = Vec; + +fn build_contacts() -> Contacts { + vec![ + Contact { name: "John".to_string(), phone: 12345, social: Social::Twitter("@the_john".to_string()) }, + Contact { name: "Mary".to_string(), phone: 9876543, social: Social::ICQ(111234) }, + Contact { name: "Jane".to_string(), phone: 555555, social: Social::Nothing }, + ] +} + +fn create_contacts() { + let contacts = build_contacts(); + // FIXME: Use ? and return Result + let serialized = serde_json::to_string(&contacts).unwrap(); + println!("serialized: {}", serialized); +} + +fn main() { + create_contacts(); +}