1
2
3
4
5
6
7
8
9
pub trait PathComponent<'a> {
    fn as_str_slice(&self) -> &str;
}

pub trait Path<'a> {
    type Item: PathComponent<'a>;
    type Iter: Iterator<Item = Self::Item> + 'a;
    fn path(self) -> Self::Iter;
}