positional 0.4.5

A library to author/parse positional files
Documentation
use positional::*;

#[derive(FromPositionalRow, ToPositionalRow, PartialEq, Debug)]
struct Data {
    #[field(size = 5)]
    name: String,
    #[field(size = 5, filler = '-', align = "right")]
    age: Option<i32>,
    #[field(size = 20)]
    address: String,
}

impl Data {
    pub fn new(name: impl ToString, age: Option<i32>, address: impl ToString) -> Self {
        Self {
            name: name.to_string(),
            age,
            address: address.to_string(),
        }
    }
}

#[test]
fn parse() {
    let row = FromPositionalRow::from_positional_row("1    -----the address is this ")
        .expect("error converting from positional row");
    assert_eq!(Data::new(1, None, "the address is this"), row);
}

#[test]
fn write() {
    let rows = vec![Data::new(1, None, "the address is this")];
    let positional_file: Writer<Data> = Writer::new(rows);
    assert_eq!(
        "1    -----the address is this ",
        positional_file.to_string()
    );
}