///|
/// Parses an Item field value (RFC 9651 ยง3.3).
///
/// Run: `moon run examples/parse_item`
fn main {
let input = "5; foo=bar; a=?0; b"
match @lib.parse_item(input) {
Err(e) => println("parse failed: \{e.to_string()}")
Ok(item) => {
println("parsed item from: \{input}")
match item.bare {
@lib.Integer(v) => println(" bare item: Integer(\{v.to_string()})")
@lib.Token(t) => println(" bare item: Token(\{t})")
_ => println(" bare item: (see debug)")
}
println(" parameter count: \{item.parameters.len()}")
for key in item.parameters.keys() {
match item.parameters.get_by_key(key) {
None => ()
Some(value) =>
match value {
@lib.Boolean(v) => println(" \{key} = Boolean(\{v})")
@lib.Token(t) => println(" \{key} = Token(\{t})")
_ => println(" \{key} = (value)")
}
}
}
// Round-trip back to the canonical wire form.
match @lib.serialize_item(item) {
Err(e) => println("serialize failed: \{e.to_string()}")
Ok(wire) => println("canonical wire: \{wire}")
}
}
}
}