serde_yaml 0.2.0

YAML support for Serde
docs.rs failed to build serde_yaml-0.2.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: serde_yaml-0.9.34+deprecated

Serde YAML Serialization Library

Build Status

This crate is a Rust library for using the Serde serialization framework with data in YAML file format. This library does not reimplement a YAML parser; it uses yaml-rust which is a pure Rust YAML 1.2 implementation.

Installation

Version 0.1.x of this crate works with 0.6.x of Serde. Both can be found on crates.io with a Cargo.toml like:

[dependencies]
serde = "^0.6"
serde_yaml = "^0.1"

Using Serde YAML

API documentation is available in rustdoc form but the general idea is:

extern crate serde;
extern crate serde_yaml;

use std::collections::BTreeMap;

fn main() {
    let mut map = BTreeMap::new();
    map.insert("x".to_string(), 1.0);
    map.insert("y".to_string(), 2.0);

    let s = serde_yaml::to_string(&map).unwrap();
    assert_eq!(s, "---\n\"x\": 1\n\"y\": 2");

    let deserialized_map: BTreeMap<String, f64> = serde_yaml::from_str(&s).unwrap();
    assert_eq!(map, deserialized_map);
}

It can also be used with Serde's automatic serialization library, serde_macros. First add this to Cargo.toml:

[dependencies]
serde = "*"
serde_macros = "*"
serde_yaml = "*"

Then use:

#![feature(plugin)]
#![plugin(serde_macros)]

extern crate serde;
extern crate serde_yaml;

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

fn main() {
    let point = Point { x: 1.0, y: 2.0 };

    let s = serde_yaml::to_string(&point).unwrap();
    assert_eq!(s, "---\n\"x\": 1\n\"y\": 2");

    let deserialized_point: Point = serde_yaml::from_str(&s).unwrap();
    assert_eq!(point, deserialized_point);
}