deriving lens for custom data types.
```rust
enum AnEnum
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(())
} ```
Lens
for enum.Prism
and Review
for the variant has more than one argument or has named field.