Skip to main content

write_rec/
write_rec.rs

1//! Build a fresh `.rec` file from scratch and print it to stdout.
2//!
3//! Demonstrates [`Db::new`], [`OwnedRset`], [`OwnedRset::set_descriptor`],
4//! and [`Db::to_rec_string`] — the write-side primitives that complement
5//! [`Db::parse_str`].
6
7use recutils_rs::{Db, OwnedRset, Record};
8
9fn main() -> Result<(), Box<dyn std::error::Error>> {
10    let mut db = Db::new();
11
12    let mut rset = OwnedRset::new();
13
14    let mut descriptor = Record::new();
15    descriptor.append_field("%rec", "Book")?;
16    descriptor.append_field("%type", "Year int")?;
17    descriptor.append_field("%mandatory", "Title")?;
18    rset.set_descriptor(descriptor);
19
20    for (title, author, year) in [
21        ("Refactoring", "Martin Fowler", "1999"),
22        ("Domain-Driven Design", "Eric Evans", "2003"),
23        ("Test-Driven Development", "Kent Beck", "2002"),
24    ] {
25        let mut record = Record::new();
26        record.append_field("Title", title)?;
27        record.append_field("Author", author)?;
28        record.append_field("Year", year)?;
29        rset.append_record(record)?;
30    }
31
32    db.append_rset(rset)?;
33    println!("{}", db.to_rec_string()?);
34    Ok(())
35}