From 78d08968eb84a459be9536399d9372e563bb5532 Mon Sep 17 00:00:00 2001 From: Joscha Date: Tue, 22 Nov 2022 16:45:29 +0100 Subject: [PATCH] Move BoundedSeparated helper functions into ast --- src/ast/basic.rs | 34 ++++++++++++++++++++++++++++++++++ src/desugar/basic.rs | 36 +----------------------------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/ast/basic.rs b/src/ast/basic.rs index ee6428a..867bcf1 100644 --- a/src/ast/basic.rs +++ b/src/ast/basic.rs @@ -106,6 +106,40 @@ impl BoundedSeparated { .push((Space::empty(self.span), elem, Space::empty(self.span))); self } + + pub fn map(self, f: impl Fn(E) -> E2) -> BoundedSeparated { + let elems = self + .elems + .into_iter() + .map(|(s0, e, s1)| (s0, f(e), s1)) + .collect::>(); + + BoundedSeparated { + elems, + trailing: self.trailing, + span: self.span, + } + } + + pub fn remove_map( + self, + f: impl Fn(E) -> Result, + ) -> (BoundedSeparated, 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 { diff --git a/src/desugar/basic.rs b/src/desugar/basic.rs index 6f9ec72..156445f 100644 --- a/src/desugar/basic.rs +++ b/src/desugar/basic.rs @@ -1,4 +1,4 @@ -use crate::ast::{BoundedSeparated, Space}; +use crate::ast::BoundedSeparated; impl BoundedSeparated { pub fn desugar(self, desugar_elem: impl Fn(E) -> (E, bool)) -> (Self, bool) { @@ -21,38 +21,4 @@ impl BoundedSeparated { }; (new, desugared) } - - pub fn map(self, f: impl Fn(E) -> E2) -> BoundedSeparated { - let elems = self - .elems - .into_iter() - .map(|(s0, e, s1)| (s0, f(e), s1)) - .collect::>(); - - BoundedSeparated { - elems, - trailing: self.trailing, - span: self.span, - } - } - - pub fn remove_map( - self, - f: impl Fn(E) -> Result, - ) -> (BoundedSeparated, 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) - } }