这里的文档定义了一个trait,其中包含一个名为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;