Edo*_*rdo 5 ownership rust borrowing
我希望以下代码由于过期而无法编译,但它可以工作。
fn main() {
let x;
{
let y = &13;
x = y;
}
println!("{}", x);
}
Run Code Online (Sandbox Code Playgroud)
fn main() {
let x;
{
let y = &13;
x = y;
}
println!("{}", x);
}
Run Code Online (Sandbox Code Playgroud)
复合类型的相同示例会按照我的意愿引发错误。
fn main() {
let x: &Box<i32>;
{
let y = &Box::new(13);
x = y;
}
println!("{}", x);
}
Run Code Online (Sandbox Code Playgroud)
13
Run Code Online (Sandbox Code Playgroud)
一个典型的活生生的例子也给出了一个错误:
fn main() {
let x;
{
let y = 13;
x = &y;
}
println!("{}", x);
}
Run Code Online (Sandbox Code Playgroud)
fn main() {
let x: &Box<i32>;
{
let y = &Box::new(13);
x = y;
}
println!("{}", x);
}
Run Code Online (Sandbox Code Playgroud)
在处理原始类型时,Rust 似乎通过所有权而不是借用来自动管理分配。有谁知道在这种情况下它是否正确,为什么?不幸的是,我没有找到任何答案。
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |