filter/
filter.rs

1use libftrace::*;
2
3#[derive(Debug)]
4struct User {
5    name: String,
6    friends: Vec<User>,
7}
8
9#[traced(level = Info, fields(name = user.name))]
10fn process_user(user: User) {
11    debug!("processing {} friends", user.friends.len());
12
13    for friend in &user.friends {
14        trace!("adding {} as friend", friend.name);
15    }
16}
17
18fn main() {
19    let filter = libftrace::filter::from_default_env()
20        .or_else(|err| {
21            eprintln!("could not parse filter: {err:?}");
22
23            libftrace::filter::parse("info")
24        })
25        .unwrap();
26
27    libftrace::set_filter(filter);
28
29    process_user(User {
30        name: String::from("John Doe"),
31        friends: vec![
32            User {
33                name: String::from("Jane Doe"),
34                friends: Vec::new(),
35            },
36            User {
37                name: String::from("Jax Doe"),
38                friends: Vec::new(),
39            },
40            User {
41                name: String::from("John Bow"),
42                friends: Vec::new(),
43            },
44        ],
45    });
46}