#[derive(Debug)]
enum Component<'a> {
Scheme(&'a str),
HostName(&'a str), HostIp(&'a [u8]),
Port(u16),
Discard(crate::accessor::Discard),
Path(&'a str),
Query(&'a str),
Fragment(&'a str),
}
trait CursorPosition {
fn get(&self) -> Component<'_>;
}
trait CriRef {
type Iter: Iterator<Item=Self::CursorPosition>;
type CursorPosition: CursorPosition;
fn components(&self) -> Self::Iter;
}
pub struct IteratorFromAccessor<C: crate::accessor::CriRef>(C);
impl<C: crate::accessor::CriRef> CriRef for IteratorFromAccessor<C> {
type Iter = ComponentProducer<C>;
type CursorPosition = impl CursorPosition;
fn components(&self) -> Self::Iter {
}
}
enum ComponentProducer<C: crate::accessor::CriRef> {
Initial,
ProducingPath(C::PathIter),
}