#![allow(unused)]
fn main() {
use karpal_optics::{Lens, Prism};
// Lens: focus on a field
struct User { name: String, age: u32 }
let name_lens = Lens::new(|u: &User| u.name.clone(), |u, n| User { name: n, ..u });
let user = User { name: "Alice".into(), age: 30 };
let renamed = name_lens.set(user, "Bob".into());
assert_eq!(renamed.name, "Bob");
// Prism: focus on a variant
let some_prism = Prism::new(
|x: Option<i32>| x.map(Ok).unwrap_or(Err(())),
|v: i32| Some(v),
);
}