Overview

deriving lens for custom data types.

Example

```rust

[derive(Optic, Review, Prism, Debug)]

enum AnEnum { A(T, i32), #[optic] B(T), }

[derive(Optic, Lens, Debug)]

struct Foo { #[optic] a: i32, #[optic] b: i32, }

fn test() -> Option<()> { let x = optics!(Some.B).review(Foo { a: 3, b: 2, }); asserteq!(optics!(Some.B.b).pm(x)?, 2);

Some(())

} ```

Limitation