Sha256: 5c1bb83eef7fdf41f7d7873db4681492ce181000669aadee8895ca21e85f0aed

Contents?: true

Size: 1.2 KB

Versions: 25

Compression:

Stored size: 1.2 KB

Contents

//! An example showing off the usage of `Deserialize` to automatically decode
//! TOML into a Rust `struct`

#![deny(warnings)]
#![allow(dead_code)]

use serde_derive::Deserialize;

/// This is what we're going to decode into. Each field is optional, meaning
/// that it doesn't have to be present in TOML.
#[derive(Debug, Deserialize)]
struct Config {
    global_string: Option<String>,
    global_integer: Option<u64>,
    server: Option<ServerConfig>,
    peers: Option<Vec<PeerConfig>>,
}

/// Sub-structs are decoded from tables, so this will decode from the `[server]`
/// table.
///
/// Again, each field is optional, meaning they don't have to be present.
#[derive(Debug, Deserialize)]
struct ServerConfig {
    ip: Option<String>,
    port: Option<u64>,
}

#[derive(Debug, Deserialize)]
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"
    "#;

    let decoded: Config = toml::from_str(toml_str).unwrap();
    println!("{:#?}", decoded);
}

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
wasmtime-18.0.3 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-17.0.1 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-17.0.0 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-16.0.0 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-15.0.1 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-15.0.0 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-14.0.4 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-14.0.3 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-14.0.1 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-14.0.0 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-13.0.0 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-12.0.1 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-12.0.0 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-11.0.0 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-10.0.1 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-10.0.0 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-9.0.4 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-9.0.1 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-8.0.0 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs
wasmtime-7.0.0 ./ext/cargo-vendor/toml-0.5.11/examples/decode.rs