将字符附加到生锈的字符串中

时间:2014-05-21 22:29:46

标签: rust traits

文档here定义了一个特征,其中包含一个方法push_char,该方法采用可变self并为其附加一个字符。但是,此代码失败:

fn foo() {
  let mut s = "hey".to_owned();
  s.push_char('!');
}

试图编译:

$ rustc --version
rustc 0.11-pre (e8053b9 2014-05-12 09:12:04 -0700)
host: x86_64-apple-darwin
$ rustc appendchar.rs
appendchar.rs:5:5: 5:19 error: type `~str` does not implement any method in scope named `push_char`
appendchar.rs:5   s.push_char('!');
                    ^~~~~~~~~~~~~~
error: aborting due to previous error

因此,我们可以看到s确实属于~str类型,根据文档,此类型实现了OwnedStr。那为什么会失败?顺便说一下,添加以下行并不能解决问题:

use std::str::OwnedStr;

1 个答案:

答案 0 :(得分:3)

我认为您正在使用0.10文档和主构建。为动态大小类型的勇敢新世界做准备,其中~str(又名Box<str>)不包含容量但仅包含长度和因此无法有效地推动,因为它需要每次重新分配those methods have been removed from OwnedStr。现在你应该处理StrBuf而不是push_char