将字符追加到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
的方法