serde-yaml alternatives and similar packages
Based on the "YAML" category.
Alternatively, view serde-yaml alternatives based on common mentions on social networks and blogs.
Less time debugging, more time building
Do you think we are missing an alternative of serde-yaml or a related project?
README
Serde YAML
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.
Dependency
[dependencies]
serde = "1.0"
serde_yaml = "0.8"
Release notes are available under GitHub releases.
Using Serde YAML
API documentation is available in rustdoc form but the general idea is:
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 s = serde_yaml::to_string(&map)?;
assert_eq!(s, "---\nx: 1.0\ny: 2.0\n");
// Deserialize it back to a Rust type.
let deserialized_map: BTreeMap<String, f64> = serde_yaml::from_str(&s)?;
assert_eq!(map, deserialized_map);
Ok(())
}
It can also be used with Serde's derive macros to handle structs and enums defined by your program.
[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_yaml = "0.8"
use serde::{Serialize, Deserialize};
#[derive(Debug, PartialEq, Serialize, Deserialize)]
struct Point {
x: f64,
y: f64,
}
fn main() -> Result<(), serde_yaml::Error> {
let point = Point { x: 1.0, y: 2.0 };
let s = serde_yaml::to_string(&point)?;
assert_eq!(s, "---\nx: 1.0\ny: 2.0\n");
let deserialized_point: Point = serde_yaml::from_str(&s)?;
assert_eq!(point, deserialized_point);
Ok(())
}
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
*Note that all licence references and agreements mentioned in the serde-yaml README section above
are relevant to that project's source code only.