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}