diff options
author | kper <kevp.per@gmail.com> | 2016-10-02 12:30:24 +0100 |
---|---|---|
committer | kper <kevp.per@gmail.com> | 2016-10-02 12:32:41 +0100 |
commit | 5280a6c7680226c46bef2711b3d013bf81282c65 (patch) | |
tree | e6a77b7bd5de1a273a892f084ab0118d6a19799e | |
parent | a626c36166e8248bc891f88222ee287bf8d86a79 (diff) | |
download | milf-rs-5280a6c7680226c46bef2711b3d013bf81282c65.tar.gz milf-rs-5280a6c7680226c46bef2711b3d013bf81282c65.zip |
Add example for decoding toml to struct
-rw-r--r-- | examples/struct.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/examples/struct.rs b/examples/struct.rs new file mode 100644 index 0000000..52b2eb7 --- /dev/null +++ b/examples/struct.rs @@ -0,0 +1,51 @@ +#![deny(warnings)] +extern crate toml; +extern crate rustc_serialize; + +use rustc_serialize::Decodable; + +#[derive(Debug,RustcDecodable)] +struct Config { + global_string: Option<String>, + global_integer: Option<u64>, + server: Option<ServerConfig>, + peers: Option<Vec<PeerConfig>>, +} + +#[derive(Debug,RustcDecodable)] +struct ServerConfig { + ip: Option<String>, + port: Option<u64>, +} + +#[derive(Debug,RustcDecodable)] +struct PeerConfig { + ip: Option<String>, + port: Option<u64>, +} + +fn main() { + let toml_str = r#" + global_string = "test" + global_integer = 5 + + [server] + ip = "127.0.0.1" + port = 80 + + [[peers]] + ip = "127.0.0.1" + port = 8080 + + [[peers]] + ip = "127.0.0.1" + port = 8081 + "#; + + let toml = toml::Parser::new(&toml_str).parse().unwrap(); + + let mut decoder = toml::Decoder::new(toml::Value::Table(toml)); + let decoded = Config::decode(&mut decoder).unwrap(); + + println!("{:?}", decoded); +} |