修剪字符串后,找不到类型为&str的名为pu​​sh_str的方法

时间:2018-07-20 17:58:04

标签: scope rust

我一直收到此错误。我认为这是因为我遮蔽了answer,因为当我注释掉那一部分时,我不再收到错误。我不明白为什么会这样。

fn main() {
    let mut answer = String::new();
    let num = 40;

    if num % 2 == 0 {
        answer.push_str("fact2 ");
    }
    if num % 5 == 0 {
        answer.push_str("fact5 ");
    }

    let answer = answer.trim();
    answer.push_str("bob was here");
    println!("{}", answer);
}
error[E0599]: no method named `push_str` found for type `&str` in the current scope
  --> src/main.rs:13:12
   |
13 |     answer.push_str("bob was here");
   |            ^^^^^^^^

2 个答案:

答案 0 :(得分:2)

  

我认为是因为我遮蔽了answer

是的。 String::trim返回&str

pub fn trim(&self) -> &str

&str没有push_str方法。

另请参阅:

答案 1 :(得分:2)

您是对的,let answer = answer.trim();是问题所在。它将answer设置为类型&str,并且push_str是为可变的String定义的。

您可以通过将该行更改为以下内容来修复它:

answer = answer.trim().to_string();