use super::*; #[derive(Clone, Copy)] pub struct SomeInner; #[allow(non_upper_case_globals)] pub const _Some: Prism = Prism(SomeInner); impl PrismPreview> for SomeInner { type Field = T; fn preview(thing: Option) -> Option { thing } } impl PrismReview> for SomeInner { fn review(thing: Self::Field) -> Option { Some(thing) } } #[derive(Clone, Copy)] pub struct NoneInner; #[allow(non_upper_case_globals)] pub const _None: Prism = Prism(NoneInner); impl PrismPreview> for NoneInner { type Field = (); fn preview(_thing: Option) -> Option { Some(()) } } impl PrismReview> for NoneInner { fn review(_thing: Self::Field) -> Option { None } }