1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/// Traits for types which represent a view or subset of some other type.
pub trait View<'a> {
/// The type which View comes from
type Superset;
/// Splits from the containing superset
fn split(orig: Self::Superset) -> Self;
}
// Implement view for self. A set is always its own subset
impl<'a, T> View<'a> for &'a T {
type Superset = Self;
fn split(orig: Self::Superset) -> Self {
orig
}
}
impl<'a, T> View<'a> for &'a mut T {
type Superset = Self;
fn split(orig: Self::Superset) -> Self {
orig
}
}
