Sha256: ebb019364720589b634fa47a3fc4c8ca7ae14c9a6df8c89cd086e421d442cd77

Contents?: true

Size: 1.2 KB

Versions: 13

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::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

13 entries across 13 versions & 1 rubygems

Version Path
wasmtime-29.0.0 ./ext/cargo-vendor/toml-0.8.19/examples/decode.rs
wasmtime-28.0.0 ./ext/cargo-vendor/toml-0.8.19/examples/decode.rs
wasmtime-27.0.0 ./ext/cargo-vendor/toml-0.8.19/examples/decode.rs
wasmtime-26.0.0 ./ext/cargo-vendor/toml-0.8.19/examples/decode.rs
wasmtime-25.0.2 ./ext/cargo-vendor/toml-0.8.19/examples/decode.rs
wasmtime-25.0.1 ./ext/cargo-vendor/toml-0.8.19/examples/decode.rs
wasmtime-25.0.0 ./ext/cargo-vendor/toml-0.8.19/examples/decode.rs
wasmtime-24.0.0 ./ext/cargo-vendor/toml-0.8.19/examples/decode.rs
wasmtime-23.0.2 ./ext/cargo-vendor/toml-0.8.12/examples/decode.rs
wasmtime-22.0.0 ./ext/cargo-vendor/toml-0.8.12/examples/decode.rs
wasmtime-21.0.1 ./ext/cargo-vendor/toml-0.8.12/examples/decode.rs
wasmtime-20.0.2 ./ext/cargo-vendor/toml-0.8.12/examples/decode.rs
wasmtime-20.0.0 ./ext/cargo-vendor/toml-0.8.12/examples/decode.rs