git-ref-format: DoubleEndedIterator for Components

Add DoubleEndedIterator implementations for the two Components
iterators.

Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
X-Clacks-Overhead: GNU Terry Pratchett
This commit is contained in:
Fintan Halpenny
2022-11-18 10:49:22 +00:00
parent 6479ba091f
commit cf1594cf43
2 changed files with 22 additions and 0 deletions
+11
View File
@@ -34,6 +34,17 @@ impl<'a> Iterator for Components<'a> {
}
}
impl<'a> DoubleEndedIterator for Components<'a> {
#[inline]
fn next_back(&mut self) -> Option<Self::Item> {
self.inner
.next_back()
.map(RefStr::from_str)
.map(Cow::from)
.map(Component)
}
}
impl<'a> From<&'a RefStr> for Components<'a> {
#[inline]
fn from(rs: &'a RefStr) -> Self {
+11
View File
@@ -66,6 +66,17 @@ impl<'a> Iterator for Components<'a> {
}
}
impl<'a> DoubleEndedIterator for Components<'a> {
#[inline]
fn next_back(&mut self) -> Option<Self::Item> {
self.inner.next_back().map(|next| match next {
"*" => Component::Glob(None),
x if x.contains('*') => Component::Glob(Some(PatternStr::from_str(x))),
x => Component::Normal(RefStr::from_str(x)),
})
}
}
impl<'a> From<&'a PatternStr> for Components<'a> {
#[inline]
fn from(p: &'a PatternStr) -> Self {