1use crate::*;
2
3pub trait PathExt {
4 fn last_segment(&self) -> &PathSegment;
5 fn last_segment_mut(&mut self) -> &mut PathSegment;
6 fn leading_path(&self) -> Vec<&PathSegment>;
7}
8
9impl PathExt for Path {
10 fn leading_path(&self) -> Vec<&PathSegment> {
11 let mut segments: Vec<&PathSegment> = Vec::new();
12
13 let mut segments_iter = self.segments.iter().peekable();
14
15 while let Some(segment) = segments_iter.next() {
16 if segments_iter.peek().is_some() {
17 segments.push(segment);
18 }
19 }
20
21 segments
22 }
23
24 fn last_segment(&self) -> &PathSegment {
25 self.segments.last().unwrap()
26 }
27
28 fn last_segment_mut(&mut self) -> &mut PathSegment {
29 self.segments.last_mut().unwrap()
30 }
31}