使用生命周期将字符串转换为& str

时间:2017-03-29 22:38:59

标签: string rust lifetime

我有一个包含一个成员的结构:

pub struct Term<'a>(pub &'a str);

我还有Vec<Term>,我想将Vec转换为Iterator,然后将&str小写,例如:

pub fn add_vec(document: Vec<Term<'a>>) {
    let m_term = document.into_iter().map(
        |dx| Term(dx.0.to_lowercase().as_str())
    ).collect::<Vec<_>>();
}

但我看到了这个错误:

error: borrowed value does not live long enough
  --> src/tfidf.rs:47:23
   |
47 |             |dx| Term(dx.0.to_lowercase().as_str())
   |                       ^^^^^^^^^^^^^^^^^^^         - temporary value only lives until here
   |                       |
   |                       temporary value created here
   |
note: borrowed value must be valid for the lifetime 'a as defined on the block at 44:55...

我想我明白问题是什么,但我不知道如何将String to_lowercase()的{​​{1}}结果转换为&str,其生命周期为{{1} }}。

0 个答案:

没有答案