1pub trait PathComponent<'a> { 2 fn as_str_slice(&self) -> &str; 3} 4 5pub trait Path<'a> { 6 type Item: PathComponent<'a>; 7 type Iter: Iterator<Item = Self::Item> + 'a; 8 fn path(self) -> Self::Iter; 9}