将字符追加到rust中的字符串

将字符追加到rust中的字符串,rust,traits,Rust,Traits,文档定义了一个特性,其中包括一个方法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 append

文档定义了一个特性,其中包括一个方法
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;

我假定您使用的是0.10文档和主版本。为迎接动态大小类型的全新世界做准备,
~str
(又称
)不包含容量,只包含长度,因此无法有效地推送到,因为它需要每次重新分配。现在您应该改为处理,它具有类似于
push\u char
的方法