summaryrefslogtreecommitdiff
path: root/dhall_core/src/text.rs
diff options
context:
space:
mode:
Diffstat (limited to 'dhall_core/src/text.rs')
-rw-r--r--dhall_core/src/text.rs20
1 files changed, 10 insertions, 10 deletions
diff --git a/dhall_core/src/text.rs b/dhall_core/src/text.rs
index eb0d39c..2a468d2 100644
--- a/dhall_core/src/text.rs
+++ b/dhall_core/src/text.rs
@@ -30,8 +30,8 @@ impl<N, E> From<String> for InterpolatedText<N, E> {
}
#[derive(Debug, Clone)]
-pub enum InterpolatedTextContents<'a, Note, Embed> {
- Text(&'a str),
+pub enum InterpolatedTextContents<Note, Embed> {
+ Text(String),
Expr(SubExpr<Note, Embed>),
}
@@ -46,35 +46,35 @@ impl<N, E> InterpolatedText<N, E> {
}
}
- pub fn iter(&self) -> impl Iterator<Item = InterpolatedTextContents<N, E>> {
+ pub fn iter<'a>(
+ &'a self,
+ ) -> impl Iterator<Item = InterpolatedTextContents<N, E>> + 'a {
use std::iter::once;
- once(InterpolatedTextContents::Text(self.head.as_ref())).chain(
+ once(InterpolatedTextContents::Text(self.head.clone())).chain(
self.tail.iter().flat_map(|(e, s)| {
once(InterpolatedTextContents::Expr(Rc::clone(e)))
- .chain(once(InterpolatedTextContents::Text(s)))
+ .chain(once(InterpolatedTextContents::Text(s.clone())))
}),
)
}
}
-impl<'a, N: 'a, E: 'a> FromIterator<InterpolatedTextContents<'a, N, E>>
+impl<'a, N: 'a, E: 'a> FromIterator<InterpolatedTextContents<N, E>>
for InterpolatedText<N, E>
{
fn from_iter<T>(iter: T) -> Self
where
- T: IntoIterator<Item = InterpolatedTextContents<'a, N, E>>,
+ T: IntoIterator<Item = InterpolatedTextContents<N, E>>,
{
let mut res = InterpolatedText {
head: "".to_owned(),
tail: vec![],
};
- // let mut empty_string = "".to_owned();
let mut crnt_str = &mut res.head;
for x in iter.into_iter() {
match x {
- InterpolatedTextContents::Text(s) => crnt_str.push_str(s),
+ InterpolatedTextContents::Text(s) => crnt_str.push_str(&s),
InterpolatedTextContents::Expr(e) => {
- // crnt_str = &mut empty_string;
res.tail.push((e.clone(), "".to_owned()));
crnt_str = &mut res.tail.last_mut().unwrap().1;
}