use lupa::{inspect, snapshot, snapshot_diff, RunMode};
#[derive(Debug, Clone)]
struct AppState {
user: User,
session: Session,
}
#[derive(Debug, Clone)]
struct User {
id: u64,
name: String,
role: Role,
}
#[derive(Debug, Clone)]
enum Role {
Guest,
Admin,
}
#[derive(Debug, Clone)]
struct Session {
token: String,
requests: u32,
errors: u32,
tags: Vec<String>,
}
fn main() {
let mut state = AppState {
user: User {
id: 1,
name: "Alice".into(),
role: Role::Guest,
},
session: Session {
token: "abc123".into(),
requests: 0,
errors: 0,
tags: vec!["fresh".into()],
},
};
inspect!(state);
let before = snapshot!(state);
state.session.requests = 42;
state.session.errors = 3;
state.session.tags.push("active".into());
state.user.role = Role::Admin;
inspect!(state);
snapshot_diff!(before, state);
println!("Snapshots sent. Launching TUI inspector...\n");
lupa::run_mode(RunMode::Tui).unwrap();
}