use super::{CollectorBase, IntoCollectorBase};
#[allow(private_bounds)]
pub trait CollectorByRef: Sealed {
type Collector<'a>: CollectorBase
where
Self: 'a;
fn collector(&self) -> Self::Collector<'_>;
}
impl<T> CollectorByRef for T
where
T: ?Sized,
for<'a> &'a T: IntoCollectorBase,
{
type Collector<'a>
= <&'a T as IntoCollectorBase>::IntoCollector
where
T: 'a;
#[inline]
fn collector(&self) -> Self::Collector<'_> {
self.into_collector()
}
}
trait Sealed {}
impl<T> Sealed for T
where
T: ?Sized,
for<'a> &'a T: IntoCollectorBase,
{
}