mod common; use common::DummyBackend; use interactive_object_builder::*; pub struct Configuration { verbose: bool, values: Vec, } impl BuildableCollection for Configuration { fn builder(_backend: B) -> Box> where B: Backend { Box::new(ConfigStructBuilder) } } pub struct ConfigStructBuilder; impl CollectionBuilder for ConfigStructBuilder { type Output = Configuration; fn build_collection(&self, value_desc: &str) -> Result { println!("Building {}", value_desc); let verbose = bool::builder(DummyBackend).build_value(value_desc)?; let values = Vec::::builder(DummyBackend).build_collection(value_desc)?; Ok(Configuration { verbose, values, }) } } #[test] fn test_struct() { let c = Configuration::builder(DummyBackend).build_collection("config").unwrap(); assert!(c.verbose); assert_eq!(c.values, [42, 42, 42]); }