Skip to main content

advanced/
advanced.rs

1fn main() {
2    typed_log::push_log_impl(|garden: &library::Garden| {
3        println!("{:?}", garden);
4    });
5    typed_log::push_log_impl(|garden: &library::Garden| {
6        for _ in 0..garden.flower_amount {
7            print!("🌸");
8        }
9        println!();
10        println!("Thanks for visiting my garden.")
11    });
12    typed_log::push_log_any(|garden: &dyn typed_log::Loggable| {
13        println!("the address of this it sgarden is: {:p}", &garden);
14    });
15
16    library::make_a_garden();
17}
18
19mod library {
20    use std::any::TypeId;
21
22    use typed_log::{Loggable, log_any};
23
24    #[derive(Debug)]
25    pub struct Garden {
26        pub flower_amount: usize,
27    }
28
29    impl Loggable for Garden {
30        fn type_id(&self) -> std::any::TypeId {
31            TypeId::of::<Self>()
32        }
33    }
34
35    pub fn make_a_garden() {
36        let garden = Garden { flower_amount: 10 };
37        log_any(&garden);
38    }
39}