use super::sieve_trait::Sieve;
pub trait SieveRef: Sieve {
type ConeRefIter<'a>: Iterator<Item = (Self::Point, &'a Self::Payload)>
where
Self: 'a;
type SupportRefIter<'a>: Iterator<Item = (Self::Point, &'a Self::Payload)>
where
Self: 'a;
fn cone_ref<'a>(&'a self, p: Self::Point) -> Self::ConeRefIter<'a>;
fn support_ref<'a>(&'a self, p: Self::Point) -> Self::SupportRefIter<'a>;
#[inline]
fn cone_points<'a>(&'a self, p: Self::Point) -> impl Iterator<Item = Self::Point> + 'a {
self.cone_ref(p).map(|(q, _)| q)
}
#[inline]
fn support_points<'a>(&'a self, p: Self::Point) -> impl Iterator<Item = Self::Point> + 'a {
self.support_ref(p).map(|(q, _)| q)
}
}