bad-optics/src/lenses/identity.rs

23 lines
458 B
Rust
Raw Normal View History

use crate::lenses::{Lens, LensOver, LensView};
2021-11-05 11:03:17 +00:00
2021-11-05 14:22:59 +00:00
#[derive(Clone, Copy)]
pub struct IdInner;
#[allow(non_upper_case_globals)]
pub const id: Lens<IdInner> = Lens(IdInner);
2021-11-05 11:03:17 +00:00
impl<T> LensView<T> for IdInner {
2021-11-05 11:03:17 +00:00
type Field = T;
2021-11-11 10:39:47 +00:00
fn view(&self, thing: T) -> Self::Field {
2021-11-05 11:03:17 +00:00
thing
}
}
impl<T> LensOver<T> for IdInner {
2021-11-11 10:39:47 +00:00
fn over<F>(&self, thing: T, f: F) -> T
where
F: FnOnce(Self::Field) -> Self::Field,
{
2021-11-05 11:03:17 +00:00
f(thing)
}
}