【问题标题】:No method named `push_str` found for type `&str` after trimming a string修剪字符串后,没有为类型“&str”找到名为“push_str”的方法
【发布时间】:2018-07-20 17:58:03
【问题描述】:

我不断收到此错误。我假设这是因为我遮蔽了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");
   |            ^^^^^^^^

【问题讨论】:

    标签: scope rust


    【解决方案1】:

    我假设这是因为我遮住了answer 修剪它

    是的。 String::trim 返回&str

    pub fn trim(&self) -> &str
    

    &str 没有push_str 方法。

    另见:

    【讨论】:

      【解决方案2】:

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

      您可以通过将该行更改为:

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

      【讨论】:

        猜你喜欢
        • 2019-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多