trait Seal {}
#[allow(private_bounds)]
pub trait Size: Seal + Send + Sync + Clone + Copy {
fn exact_len(self) -> Option<usize>;
}
#[derive(Clone, Copy)]
pub struct ExactSize(pub(super) usize);
impl Seal for ExactSize {}
impl Size for ExactSize {
#[inline(always)]
fn exact_len(self) -> Option<usize> {
Some(self.0)
}
}
#[derive(Clone, Copy)]
pub struct UnknownSize;
impl Seal for UnknownSize {}
impl Size for UnknownSize {
#[inline(always)]
fn exact_len(self) -> Option<usize> {
None
}
}