我不明白这个错误cannot move out of borrowed content
。我已经收到了很多次,并且我一直都解决了它,但是我从来不明白为什么。
例如:
for line in self.xslg_file.iter() {
self.buffer.clear();
for current_char in line.into_bytes().iter() {
self.buffer.push(*current_char as char);
}
println!("{}", line);
}
产生错误:
error[E0507]: cannot move out of borrowed content
--> src/main.rs:31:33
|
31 | for current_char in line.into_bytes().iter() {
| ^^^^ cannot move out of borrowed content
在较新版本的Rust中,错误为
error[E0507]: cannot move out of `*line` which is behind a shared reference
--> src/main.rs:31:33
|
31 | for current_char in line.into_bytes().iter() {
| ^^^^ move occurs because `*line` has type `std::string::String`, which does not implement the `Copy` trait
我通过克隆解决了它line
:
for current_char in line.clone().into_bytes().iter() {
即使阅读其他文章,我也无法理解错误:
这种错误的根源是什么?
是的,我调查了一下,但听不懂:(而且我的字符串是std :: string :: String,根据文档,没有.bytes()方法
—
Peekmo
这叫做
—
bluss
.as_bytes()
实际上,谢谢您,它
—
Peekmo
as_bytes()
无需克隆即可使用。但是我还是不明白为什么?
.bytes()
方法。)