b0035e905c
The examples deny warnings, however a couple of examples deserialise TOML into structs. The fields of these structs are never read, which breaks cargo test in nightly mode. Allow dead code to fix the CI build.
46 lines
1 KiB
Rust
46 lines
1 KiB
Rust
//! An example showing off the usage of `Deserialize` to automatically decode
|
|
//! TOML into a Rust `struct`, with enums.
|
|
|
|
#![deny(warnings)]
|
|
#![allow(dead_code)]
|
|
|
|
use serde_derive::Deserialize;
|
|
|
|
/// This is what we're going to decode into.
|
|
#[derive(Debug, Deserialize)]
|
|
struct Config {
|
|
plain: MyEnum,
|
|
plain_table: MyEnum,
|
|
tuple: MyEnum,
|
|
#[serde(rename = "struct")]
|
|
structv: MyEnum,
|
|
newtype: MyEnum,
|
|
my_enum: Vec<MyEnum>,
|
|
}
|
|
|
|
#[derive(Debug, Deserialize)]
|
|
enum MyEnum {
|
|
Plain,
|
|
Tuple(i64, bool),
|
|
NewType(String),
|
|
Struct { value: i64 },
|
|
}
|
|
|
|
fn main() {
|
|
let toml_str = r#"
|
|
plain = "Plain"
|
|
plain_table = { Plain = {} }
|
|
tuple = { Tuple = { 0 = 123, 1 = true } }
|
|
struct = { Struct = { value = 123 } }
|
|
newtype = { NewType = "value" }
|
|
my_enum = [
|
|
{ Plain = {} },
|
|
{ Tuple = { 0 = 123, 1 = true } },
|
|
{ NewType = "value" },
|
|
{ Struct = { value = 123 } }
|
|
]"#;
|
|
|
|
let decoded: Config = toml::from_str(toml_str).unwrap();
|
|
println!("{:#?}", decoded);
|
|
}
|