2020-04-22 21:42:09 +02:00
|
|
|
/// A program that serializes a Rust structure to YAML and pretty-prints the result
|
2020-05-17 00:16:51 +02:00
|
|
|
use bat::{Input, PrettyPrinter};
|
2020-04-22 21:42:09 +02:00
|
|
|
use serde::Serialize;
|
|
|
|
|
|
|
|
#[derive(Serialize)]
|
|
|
|
struct Person {
|
|
|
|
name: String,
|
|
|
|
height: f64,
|
|
|
|
adult: bool,
|
|
|
|
children: Vec<Person>,
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let person = Person {
|
|
|
|
name: String::from("Anne Mustermann"),
|
|
|
|
height: 1.76f64,
|
|
|
|
adult: true,
|
|
|
|
children: vec![Person {
|
|
|
|
name: String::from("Max Mustermann"),
|
|
|
|
height: 1.32f64,
|
|
|
|
adult: false,
|
|
|
|
children: vec![],
|
|
|
|
}],
|
|
|
|
};
|
|
|
|
|
2023-10-01 19:44:10 +02:00
|
|
|
let mut bytes = Vec::with_capacity(128);
|
|
|
|
serde_yaml::to_writer(&mut bytes, &person).unwrap();
|
2020-04-22 21:42:09 +02:00
|
|
|
PrettyPrinter::new()
|
|
|
|
.language("yaml")
|
|
|
|
.line_numbers(true)
|
2020-04-22 22:41:25 +02:00
|
|
|
.grid(true)
|
|
|
|
.header(true)
|
2020-05-17 00:16:51 +02:00
|
|
|
.input(Input::from_bytes(&bytes).name("person.yaml").kind("File"))
|
2020-04-22 21:42:09 +02:00
|
|
|
.print()
|
|
|
|
.unwrap();
|
|
|
|
}
|