我正在阅读Rust书的生命周章,我在这个例子中看到了命名/显式生命周期:
struct Foo<'a> {
x: &'a i32,
}
fn main() {
let x; // -+ x goes into scope
// |
{ // |
let y = &5; // ---+ y goes into scope
let f = Foo { x: y }; // ---+ f goes into scope
x = &f.x; // | | error here
} // ---+ f and y go out of scope
// |
println!("{}", x); // |
} // -+ x goes out …
Run Code Online (Sandbox Code Playgroud) 如果有一个指向某个堆分配内存的框指针,我认为Rust具有"硬编码"的所有权知识,因此当通过调用某个函数传输所有权时,资源会被移动,并且函数中的参数是新的所有者.
但是,例如,对于矢量,这是怎么发生的?他们也"拥有"他们的资源,所有权机制适用于盒子指针 - 但它们是存储在变量本身的常规值,而不是指针.在这种情况下,Rust(知道)如何应用所有权机制?
我可以创建自己拥有资源的类型吗?