2021-11-11 13:29:43 +00:00
|
|
|
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)]
|
2021-11-11 13:29:43 +00:00
|
|
|
pub struct IdInner;
|
|
|
|
#[allow(non_upper_case_globals)]
|
|
|
|
pub const id: Lens<IdInner> = Lens(IdInner);
|
2021-11-05 11:03:17 +00:00
|
|
|
|
2021-11-11 13:29:43 +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
|
|
|
|
}
|
|
|
|
}
|
2021-11-11 13:29:43 +00:00
|
|
|
impl<T> LensOver<T> for IdInner {
|
2021-11-11 10:39:47 +00:00
|
|
|
fn over<F>(&self, thing: T, f: F) -> T
|
2021-11-05 12:05:55 +00:00
|
|
|
where
|
|
|
|
F: FnOnce(Self::Field) -> Self::Field,
|
|
|
|
{
|
2021-11-05 11:03:17 +00:00
|
|
|
f(thing)
|
|
|
|
}
|
|
|
|
}
|