相关疑难解决方法(0)

为什么Rust需要明确的生命周期?

我正在阅读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)

static-analysis reference lifetime rust

183
推荐指数
7
解决办法
2万
查看次数

Rust如何知道哪些类型拥有资源?

如果有一个指向某个堆分配内存的框指针,我认为Rust具有"硬编码"的所有权知识,因此当通过调用某个函数传输所有权时,资源会被移动,并且函数中的参数是新的所有者.

但是,例如,对于矢量,这是怎么发生的?他们也"拥有"他们的资源,所有权机制适用于盒子指针 - 但它们是存储在变量本身的常规值,而不是指针.在这种情况下,Rust(知道)如何应用所有权机制?

我可以创建自己拥有资源的类型吗?

heap pointers ownership rust

4
推荐指数
1
解决办法
177
查看次数

标签 统计

rust ×2

heap ×1

lifetime ×1

ownership ×1

pointers ×1

reference ×1

static-analysis ×1