Skip to main content

Crate serde_yaml_with_quirks

Crate serde_yaml_with_quirks 

Source
Expand description

githubcrates-iodocs-rs


Rust library for using the Serde serialization framework with data in YAML file format. (This project is no longer maintained.)

§Examples

extern crate serde_yaml_with_quirks as serde_yaml;
use std::collections::BTreeMap;

fn main() -> Result<(), serde_yaml::Error> {
    // You have some type.
    let mut map = BTreeMap::new();
    map.insert("x".to_string(), 1.0);
    map.insert("y".to_string(), 2.0);

    // Serialize it to a YAML string.
    let yaml = serde_yaml::to_string(&map)?;
    assert_eq!(yaml, "x: 1.0\ny: 2.0\n");

    // Deserialize it back to a Rust type.
    let deserialized_map: BTreeMap<String, f64> = serde_yaml::from_str(&yaml)?;
    assert_eq!(map, deserialized_map);
    Ok(())
}

§Using Serde derive

It can also be used with Serde’s derive macros to handle structs and enums defined in your program.

Structs serialize in the obvious way:

extern crate serde_yaml_with_quirks as serde_yaml;
use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize, PartialEq, Debug)]
struct Point {
    x: f64,
    y: f64,
}

fn main() -> Result<(), serde_yaml::Error> {
    let point = Point { x: 1.0, y: 2.0 };

    let yaml = serde_yaml::to_string(&point)?;
    assert_eq!(yaml, "x: 1.0\ny: 2.0\n");

    let deserialized_point: Point = serde_yaml::from_str(&yaml)?;
    assert_eq!(point, deserialized_point);
    Ok(())
}

Enums serialize using YAML’s !tag syntax to identify the variant name.

extern crate serde_yaml_with_quirks as serde_yaml;
use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize, PartialEq, Debug)]
enum Enum {
    Unit,
    Newtype(usize),
    Tuple(usize, usize, usize),
    Struct { x: f64, y: f64 },
}

fn main() -> Result<(), serde_yaml::Error> {
    let yaml = "
        - !Newtype 1
        - !Tuple [0, 0, 0]
        - !Struct {x: 1.0, y: 2.0}
    ";
    let values: Vec<Enum> = serde_yaml::from_str(yaml).unwrap();
    assert_eq!(values[0], Enum::Newtype(1));
    assert_eq!(values[1], Enum::Tuple(0, 0, 0));
    assert_eq!(values[2], Enum::Struct { x: 1.0, y: 2.0 });

    // The last two in YAML's block style instead:
    let yaml = "
        - !Tuple
          - 0
          - 0
          - 0
        - !Struct
          x: 1.0
          y: 2.0
    ";
    let values: Vec<Enum> = serde_yaml::from_str(yaml).unwrap();
    assert_eq!(values[0], Enum::Tuple(0, 0, 0));
    assert_eq!(values[1], Enum::Struct { x: 1.0, y: 2.0 });

    // Variants with no data can be written using !Tag or just the string name.
    let yaml = "
        - Unit  # serialization produces this one
        - !Unit
    ";
    let values: Vec<Enum> = serde_yaml::from_str(yaml).unwrap();
    assert_eq!(values[0], Enum::Unit);
    assert_eq!(values[1], Enum::Unit);

    Ok(())
}

Modules§

mapping
A YAML mapping and its iterator types.
value
The Value enum, a loosely typed way of representing any valid YAML value.
with
Customizations to use with Serde’s #[serde(with = …)] attribute.

Structs§

Deserializer
A structure that deserializes YAML into Rust values.
DeserializingQuirks
Handling of nonstandard yaml features
Error
An error that happened serializing or deserializing YAML data.
Location
The input location that an error occured.
Mapping
A YAML mapping in which the keys and values are both serde_yaml::Value.
Number
Represents a YAML number, whether integer or floating point.
Serializer
A structure for serializing Rust values into YAML.

Enums§

Value
Represents any valid YAML value.

Traits§

Index
A type that can be used to index into a serde_yaml::Value. See the get and get_mut methods of Value.

Functions§

from_reader
Deserialize an instance of type T from an IO stream of YAML.
from_slice
Deserialize an instance of type T from bytes of YAML text.
from_str
Deserialize an instance of type T from a string of YAML text.
from_value
Interpret a serde_yaml::Value as an instance of type T.
to_string
Serialize the given data structure as a String of YAML.
to_value
Convert a T into serde_yaml::Value which is an enum that can represent any valid YAML data.
to_writer
Serialize the given data structure as YAML into the IO stream.

Type Aliases§

Result
Alias for a Result with the error type serde_yaml::Error.
Sequence
A YAML sequence in which the elements are serde_yaml::Value.