From ed0ea77d6840320bb86b02cd8218c488319f2f99 Mon Sep 17 00:00:00 2001 From: Geert Stappers Date: Sun, 4 Aug 2019 23:22:34 +0200 Subject: [PATCH] Item lists example New file: examples/item_lists.rs, compiles New file: examples/journey.yaml, item_lists can't read it. Included / commited for getting help on getting it working. --- examples/item_lists.rs | 60 ++++++++++++++++++++++++++++++++++++++++++ examples/journey.yaml | 22 ++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 examples/item_lists.rs create mode 100644 examples/journey.yaml diff --git a/examples/item_lists.rs b/examples/item_lists.rs new file mode 100644 index 0000000..2d9115d --- /dev/null +++ b/examples/item_lists.rs @@ -0,0 +1,60 @@ +extern crate quire; +#[macro_use] extern crate serde_derive; +use quire::{parse_config, Options}; +use quire::validate::{Structure, Scalar}; + +#[derive(Deserialize)] +#[allow(dead_code)] +struct Journey { + name: String, + year: String, + team: Members, +} + +#[derive(Deserialize)] +#[allow(dead_code)] +struct Members(Vec); + +// give it a method +// so we can create a iterator for it +#[allow(dead_code)] +impl Members { + fn new() -> Members { + Members(Vec::new()) + } +} + +// and implement IntoIterator +impl IntoIterator for Members { + type Item = String; + type IntoIter = ::std::vec::IntoIter; + + fn into_iter(self) -> Self::IntoIter { + self.0.into_iter() + } +} + +fn validator() -> Structure<'static> { + Structure::new() + .member("name", Scalar::new()) + .member("year", Scalar::new()) + .member("team", Scalar::new()) +} + +fn work(jrny: &Journey) { + println!("name is {}.", jrny.name); + println!("year is {}.", jrny.year); + /* + for tm in jrny.team { + println!("team member {}.", tm); + } + */ +} + +fn main() { + let jrny: Journey; + jrny = parse_config("examples/journey.yaml", + &validator(), &Options::default()) + .expect("valid config"); + work(&jrny) +} diff --git a/examples/journey.yaml b/examples/journey.yaml new file mode 100644 index 0000000..7d2044f --- /dev/null +++ b/examples/journey.yaml @@ -0,0 +1,22 @@ + +# journey.yaml +# "configuration" for item_lists + +--- +name: Voyage Voyage +year: 2020 +_team: + - Alice + - Bob + - Claire + - David +_vehicles: + - Jeep + - Landrover +_locations: + - Home + - Sweet + - Home + +... +# l l