From a60cf58e5f0cc2f638b788720f9a12cabfdbe3f2 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sat, 20 Apr 2019 11:02:27 +0200 Subject: Text literals --- dhall_core/src/text.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'dhall_core/src') diff --git a/dhall_core/src/text.rs b/dhall_core/src/text.rs index 0cfbd7b..e886659 100644 --- a/dhall_core/src/text.rs +++ b/dhall_core/src/text.rs @@ -72,9 +72,21 @@ impl InterpolatedText { }), ) } + + pub fn into_iter( + self, + ) -> impl Iterator> { + use std::iter::once; + once(InterpolatedTextContents::Text(self.head)).chain( + self.tail.into_iter().flat_map(|(e, s)| { + once(InterpolatedTextContents::Expr(e)) + .chain(once(InterpolatedTextContents::Text(s))) + }), + ) + } } -impl<'a, SubExpr: Clone + 'a> FromIterator> +impl<'a, SubExpr: 'a> FromIterator> for InterpolatedText { fn from_iter(iter: T) -> Self @@ -90,7 +102,7 @@ impl<'a, SubExpr: Clone + 'a> FromIterator> match x { InterpolatedTextContents::Text(s) => crnt_str.push_str(&s), InterpolatedTextContents::Expr(e) => { - res.tail.push((e.clone(), "".to_owned())); + res.tail.push((e, "".to_owned())); crnt_str = &mut res.tail.last_mut().unwrap().1; } } -- cgit v1.2.3