use borrowscope_runtime::*;
fn main() {
println!("=== BorrowScope Runtime - Basic Usage ===\n");
reset();
let x = track_new("x", 42);
println!("Created variable x = {}", x);
let r = track_borrow("r", &x);
println!("Borrowed x as r = {}", r);
track_drop("r");
let y = track_new("y", 100);
println!("Created variable y = {}", y);
track_drop("y");
track_drop("x");
let events = get_events();
println!("\nTracked {} events:", events.len());
for (i, event) in events.iter().enumerate() {
if event.is_new() {
println!(" {}. New variable", i + 1);
} else if event.is_borrow() {
println!(" {}. Borrow", i + 1);
} else if event.is_drop() {
println!(" {}. Drop", i + 1);
}
}
let graph = get_graph();
println!("\nOwnership graph:");
println!(" Variables: {}", graph.nodes.len());
println!(" Relationships: {}", graph.edges.len());
let temp_path = std::env::temp_dir().join("borrowscope_basic.json");
match export_json(&temp_path) {
Ok(()) => println!("\nExported to: {}", temp_path.display()),
Err(e) => eprintln!("Export failed: {}", e),
}
}