chiark / gitweb /
W
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 5 May 2022 13:09:38 +0000 (14:09 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 5 May 2022 13:09:38 +0000 (14:09 +0100)
Cargo.lock
src/main.rs

index 26bf6054b628daa19306b92e6806f76d8939833f..e8164938790d0a00b632f60de2d792adf657289a 100644 (file)
@@ -20,16 +20,92 @@ version = "1.3.2"
 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"
@@ -130,6 +206,12 @@ dependencies = [
  "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"
index f1f0b2b24d8414f0faae47c593fafe698ab79f76..d5e3d219c5b66d197b9151ccb5fd11ac24d2def8 100644 (file)
@@ -1,48 +1,28 @@
-#[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:?}");
 }