diff options
author | Sam Scott <sam.scott89@gmail.com> | 2017-05-21 11:47:00 +0100 |
---|---|---|
committer | Sam Scott <sam.scott89@gmail.com> | 2017-05-21 11:47:00 +0100 |
commit | ba5e0b32b71f7f79915d671e64d19bf9f2bcf422 (patch) | |
tree | 012ba94bdfc7f4e934301851364beadae47d567b /examples | |
parent | 661cc9697a1c31abe786e45e43072800b6641871 (diff) |
Updates to documentation.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/introduction.rs | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/examples/introduction.rs b/examples/introduction.rs index fb70665..4e69f16 100644 --- a/examples/introduction.rs +++ b/examples/introduction.rs @@ -60,12 +60,12 @@ fn main() { // In this form, can also simply use `serde_urlencoded`: let encoded = urlencoded::to_string(&map).unwrap(); println!("`serde_urlencoded` to_string for map:\n\t{}", encoded); + println!(""); // Given this encoded string, you can recover the original map // as a list of pairs using serde_urlencoded: let pairs: Vec<(String, String)> = urlencoded::from_str(&encoded).unwrap(); println!("`serde_urlencoded` from_str to pairs:\n\t{:?}", pairs); - // However, the best way is to use serde_qs to deserialize the entire thing // into a struct: let params: QueryParams = qs::from_str(&encoded).unwrap(); @@ -75,6 +75,8 @@ fn main() { // Similarly, we can serialize this structure using `serde_qs`: let encoded = qs::to_string(¶ms).unwrap(); println!("`serde_qs` to_string for struct:\n\t{:?}", encoded); + println!(""); + // One nice feature is that this gives deterministic encodings: let encoded2 = qs::to_string(¶ms).unwrap(); @@ -128,11 +130,11 @@ fn main() { let params: QueryParams = qs::from_str(encoded).unwrap(); assert_eq!(params, example_params); - // Enums are supported, but only adjacently tagged enums - // (see https://serde.rs/enum-representations.html for more information). + // Enums are now fully supported! Most formats should work with varying + // results. #[derive(Deserialize, Debug, PartialEq, Serialize)] - // #[serde(tag = "type", content = "value")] enum AdjTaggedEnum { + A, B(bool), S(String), V { id: u8, v: String }, @@ -147,9 +149,22 @@ fn main() { e: AdjTaggedEnum::B(false), }; // encodes as: - // "e[type]=B&e[value]=false" + // "e[B]=false" let encoded = qs::to_string(&example_params).unwrap(); println!("`serde_qs` to_string for enum:\n\t{:?}", encoded); let params: EnumQuery = qs::from_str(&encoded).unwrap(); println!("`serde_qs` from_str for enum:\n\t{:?}", params); + println!(""); + + let example_params = EnumQuery { + e: AdjTaggedEnum::A, + }; + // encodes as: + // "e=A" + let encoded = qs::to_string(&example_params).unwrap(); + println!("`serde_qs` to_string for enum:\n\t{:?}", encoded); + let params: EnumQuery = qs::from_str(&encoded).unwrap(); + println!("`serde_qs` from_str for enum:\n\t{:?}", params); + println!(""); + } |