From 012bc05a41a436b7f925a9780887852ed796cbfc Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 29 Apr 2022 11:12:20 +0100 Subject: [PATCH] T --- Cargo.lock | 43 +++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/main.rs | 34 ++++++++++++++++++++++++---------- 3 files changed, 68 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0e5399e..3487279 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,49 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + [[package]] name = "foo" version = "0.1.0" +dependencies = [ + "serde-value", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", +] + +[[package]] +name = "ordered-float" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87" +dependencies = [ + "num-traits", +] + +[[package]] +name = "serde" +version = "1.0.136" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" + +[[package]] +name = "serde-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +dependencies = [ + "ordered-float", + "serde", +] diff --git a/Cargo.toml b/Cargo.toml index 80a79a0..2017ea9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,3 +7,4 @@ edition = "2021" [dependencies] #tokio = { version = "1", features = ["full"] } +serde-value = "0.7" diff --git a/src/main.rs b/src/main.rs index b68991f..5712dcb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,15 +1,29 @@ -fn main() { +#[allow(dead_code)] +#[allow(unused_mut)] + +#[derive(Deserialize, Debug, Copy, Clone)] +struct Place { + name: usize, // is actually s string } -#[test] -mod test { - fn wombat() { - dbg!("wombat"); - } +#[derive(Deserialize, Debug, Copy, Clone)] +struct Output { + place: Place, + ino: char, +} - #[test] - fn t() { - wombat(); - } +#[derive(Deserialize, Debug, Copy, Clone)] +struct Flattened { + #[serde(flatten)] + place: Place + inf: char, } +fn main() { + let place = Place { name: 42 }; + let o = Output { place, ino: 'o' }; + let f = Flattened { place, inf: 'f' }; + + eprintln!("O = {:?}", serde_value::to_value(&o)); + eprintln!("F = {:?}", serde_value::to_value(&f)); +} -- 2.30.2