作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
Cannot move out of borrowed content / cannot move out of behind a shared reference
(1 个回答)
12 个月前关闭。
我正在学习 Rust,我有一个关于如何将变量的引用传递给函数并使用它进行级联调用的问题。
我正面临以下代码中指出的错误:
struct User {
name: String,
address: String
}
// Argument "user" is intentionaly a reference to User struct;
//
fn func1(user: &User) {
println!("func1: {}, {}", user.name, user.address);
// error[E0507]: cannot move out of `*user` which is behind a shared reference
//
func2(*user);
}
// Argument "user" is intentionaly an instance of User struct;
//
fn func2(user: User) {
println!("func2: {}, {}", user.name, user.address);
}
fn main() {
let user = User {
name: String::from("George"),
address: String::from("Main Street")
};
func1(&user);
}
最佳答案
fn func1(user: &User)
是一个借用现有 User 对象的函数,并 promise 不修改它。 fn func2(user: User)
是一个函数,它获得一个对象的所有权并且永远不会把它归还。
Rust 阻止你做一些愚蠢的事情。有 func1
调用 func2
就像向我保证你会借我的类笔记快速阅读,然后将其传递给一个 friend ,然后他会跑掉并保留它们。你不可能把我的原件还给我。
解决方案是
func2
也引用一下。这相当于让你的 friend 答应把笔记还给你。然后你可以把它们还给我。 func2
之前克隆对象.这相当于你复制了笔记,让你的 friend 拿着你的副本跑了——然后把我的原件还给我。 关于rust - 无法移出共享引用后面的 ***,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61995143/
我正在做一个项目,我的 android 在这个项目中作为一个网络服务器工作;输入带端口号的 IP 地址,打开 Web 界面,用户可以将文件上传到手机。我想在 Web 界面上显示一些图片,以便我们的界面
我是一名优秀的程序员,十分优秀!