#[macro_use] extern crate runtime_fmt_derive; extern crate runtime_fmt; use runtime_fmt::PreparedFormat; #[derive(FormatArgs)] struct Struct { left: i32, right: &'static str, } #[derive(FormatArgs)] struct TupleStruct(i32, &'static str); #[derive(FormatArgs)] struct UnitStruct; #[derive(FormatArgs)] struct Alignable { text: &'static str, width: usize, } #[derive(FormatArgs)] struct WithBounds<'a, T: std::fmt::Display + 'a>(&'a T); fn main() { let mut prepared = PreparedFormat::prepare("{left}: {right}").unwrap(); prepared.newln(); prepared.print(&Struct { left: 42, right: "Hello, world!" }); PreparedFormat::prepare("{0}: {1}\n").unwrap().print( &TupleStruct(5, "Hello, TupleStruct") ); PreparedFormat::prepare("Hello, UnitStruct\n").unwrap().print(&UnitStruct); let prepared = PreparedFormat::prepare("({text:^width$})\n").unwrap(); prepared.print(&Alignable { text: "Wow, aligned!", width: 15 }); prepared.print(&Alignable { text: "Wow, aligned!", width: 20 }); PreparedFormat::prepare("{}").unwrap().newln().print(&WithBounds(&256)); }