use tincan::Scope;
fn main() {
println!("=== Basic Tincan Example ===\n");
let cx = Scope::new();
let count = cx.signal(0);
println!("Initial count: {}", count.get());
count.set(5);
println!("After set(5): {}", count.get());
count.update(|n| *n += 10);
println!("After update(+10): {}", count.get());
let doubled = count.with(|n| n * 2);
println!("Doubled value: {}", doubled);
let name = cx.signal(String::from("Alice"));
println!("\nName: {}", name.get());
name.set(String::from("Bob"));
println!("Updated name: {}", name.get());
let items = cx.signal(vec![1, 2, 3]);
println!("\nItems: {:?}", items.get());
items.update(|v| v.push(4));
println!("After push: {:?}", items.get());
let sum = items.with(|v| v.iter().sum::<i32>());
println!("Sum of items: {}", sum);
}