Skip to main content

struct/
struct.rs

1use formatx::formatx;
2
3#[derive(Debug)]
4struct Point {
5    x: f64,
6    y: f64,
7}
8
9impl std::fmt::Display for Point {
10    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
11        write!(f, "({}, {})", self.x, self.y)
12    }
13}
14
15fn main() {
16    let origin = Point { x: 0.0, y: 0.0 };
17    let target = Point { x: 3.5, y: -2.1 };
18
19    // Display
20    let result = formatx!("From {} to {}", origin, target).unwrap();
21    println!("{result}");
22
23    // Debug
24    let result = formatx!("Debug: {:?}", origin).unwrap();
25    println!("{result}");
26
27    // Pretty debug
28    let result = formatx!("Pretty: {:#?}", origin).unwrap();
29    println!("{result}");
30
31    // Template reuse
32    let template = formatx::Template::new("Point {name}: {point}").unwrap();
33    let r1 = template.render()
34        .named("name", &"Origin")
35        .named("point", &origin)
36        .finish()
37        .unwrap();
38    let r2 = template.render()
39        .named("name", &"Target")
40        .named("point", &target)
41        .finish()
42        .unwrap();
43    println!("{r1}");
44    println!("{r2}");
45}