source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+[[package]]
+name = "darling"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4529658bdda7fd6769b8614be250cdcfc3aeb0ee72fe66f9e41e5e5eb73eac02"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "649c91bc01e8b1eac09fb91e8dbc7d517684ca6be8ebc75bb9cafc894f9fdb6f"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ddfc69c5bfcbd2fc09a0f38451d2daf0e372e367986a83906d1b0dbc88134fb5"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "derive_builder"
+version = "0.11.2"
+source = "git+https://github.com/ijackson/rust-derive-builder?rev=ba0c1a5311bd9f93ddf5f5b8ec2a5f6f03b22fbe#ba0c1a5311bd9f93ddf5f5b8ec2a5f6f03b22fbe"
+dependencies = [
+ "derive_builder_macro",
+]
+
+[[package]]
+name = "derive_builder_core"
+version = "0.11.2"
+source = "git+https://github.com/ijackson/rust-derive-builder?rev=4516209ce98f6506bf729aa7cdbced97747f7dd1#4516209ce98f6506bf729aa7cdbced97747f7dd1"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "derive_builder_macro"
+version = "0.11.2"
+source = "git+https://github.com/ijackson/rust-derive-builder?rev=a69d5eee830bddd5ff9b146b51e27580b1a7b6b0#a69d5eee830bddd5ff9b146b51e27580b1a7b6b0"
+dependencies = [
+ "derive_builder_core",
+ "syn",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
[[package]]
name = "foo"
version = "0.1.0"
dependencies = [
+ "derive_builder",
"ron",
"serde",
"serde-value",
"serde_json",
]
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
[[package]]
name = "itoa"
version = "1.0.1"
"serde",
]
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
[[package]]
name = "syn"
version = "1.0.92"
-#[allow(dead_code)]
-#[allow(unused_mut)]
-#[allow(unused_imports)]
+#![allow(dead_code)]
+#![allow(unused_mut)]
+#![allow(unused_imports)]
-use serde::{Serialize, Deserialize};
-
-#[derive(Serialize, Deserialize, Debug, Copy, Clone)]
-struct Place {
- name: usize,
-}
+use derive_builder::Builder;
+use std::io;
-#[derive(Serialize, Deserialize, Debug, Copy, Clone)]
-struct Output {
- place: Place,
- ino: char,
-}
+use serde::{Serialize, Deserialize};
-#[derive(Serialize, Deserialize, Debug, Copy, Clone)]
-struct Flattened {
- #[serde(flatten)]
- place: Place,
- inf: char,
+#[derive(Builder,Debug)]
+#[builder(derive(Debug))]
+struct Contains {
+ #[builder(sub_builder)]
+ things: Vec<u32>,
}
-#[derive(Serialize, Deserialize, Debug, Copy, Clone)]
-struct ManuallyFlattened {
- name: usize,
- inm: char,
-}
+#[derive(Debug,Default,Clone)]
+struct VecBuilder<T>(Option<Vec<T>>);
-fn p<T: Serialize>(n: &str, v: &T) {
- println!("\n{}", n);
- println!("value {:?}", serde_value::to_value(&v));
- println!("ron {}", ron::to_string(&v).unwrap());
- println!("json {}", serde_json::to_string(&v).unwrap());
- println!();
+impl VecBuilder<u32> {
+ fn build(&self) -> Result<Vec<u32>, io::Error> { Ok(vec![]) }
}
fn main() {
- let place = Place { name: 42 };
- let o = Output { place, ino: 'o' };
- let f = Flattened { place, inf: 'f' };
- let m = ManuallyFlattened { name: 42, inm: 'm' };
-
- p("O", &o);
- p("F", &f);
- p("M", &m);
+ let cb = ContainsBuilder::default();
+ let c = cb.build();
+ println!("cb={cb:?} c={c:?}");
}