Move BoundedSeparated helper functions into ast
This commit is contained in:
parent
58106c4c5a
commit
78d08968eb
2 changed files with 35 additions and 35 deletions
|
|
@ -106,6 +106,40 @@ impl<E> BoundedSeparated<E> {
|
|||
.push((Space::empty(self.span), elem, Space::empty(self.span)));
|
||||
self
|
||||
}
|
||||
|
||||
pub fn map<E2>(self, f: impl Fn(E) -> E2) -> BoundedSeparated<E2> {
|
||||
let elems = self
|
||||
.elems
|
||||
.into_iter()
|
||||
.map(|(s0, e, s1)| (s0, f(e), s1))
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
BoundedSeparated {
|
||||
elems,
|
||||
trailing: self.trailing,
|
||||
span: self.span,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn remove_map<E1, E2>(
|
||||
self,
|
||||
f: impl Fn(E) -> Result<E1, E2>,
|
||||
) -> (BoundedSeparated<E1>, Vec<(Space, E2, Space)>) {
|
||||
let mut kept = vec![];
|
||||
let mut removed = vec![];
|
||||
for (s0, elem, s1) in self.elems {
|
||||
match f(elem) {
|
||||
Ok(elem) => kept.push((s0, elem, s1)),
|
||||
Err(elem) => removed.push((s0, elem, s1)),
|
||||
}
|
||||
}
|
||||
let new = BoundedSeparated {
|
||||
elems: kept,
|
||||
trailing: self.trailing,
|
||||
span: self.span,
|
||||
};
|
||||
(new, removed)
|
||||
}
|
||||
}
|
||||
|
||||
impl BoundedSeparated<TableLitElem> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue