Rust 1.0 之前存在的智能指针的替代品是什么?

Nod*_*oid 3 rust

我正在更新一些使用智能指针和其他内存管理代码的旧 Rust 代码,这些代码在版本 1 发布之前已被弃用和删除。

是否可以直接替代旧的智能指针之类的东西,还是使用 Box 之类的东西来分配内存更好?

我有这样的代码(这非常简化!)

struct my_rectangle {
    x: i32,
    y: i32,
    length: i32,
    breadth: i32,
}

fn allocate_rect() {
    let x: ~my_rectangle = ~my_rectangle{x: 5, y: 5, length: 25, breadth:15};
}
Run Code Online (Sandbox Code Playgroud)

fn firstMethod() {
    let memblock: @int = @256;
    secondMethod(memblock);
    println!(“%d”,  *memblock);
}

fn secondMethod(memblock: @int) {
    let secMemblock: @int = memblock;
}
Run Code Online (Sandbox Code Playgroud)

这在 1.0 之前可以正常工作,但现在无法构建。

Fra*_*gné 6

~T改为Box<T>. ~expr现在应该是Box::new(expr)

@T去掉了; 它本来是一个指向垃圾收集对象的指针,但事实并非如此。标准库提供了引用计数指针Rc<T>Arc<T>,应该涵盖大多数用例。

Rust 在 1.0 之前发生了很大的变化。您可能想阅读The Rust Programming Language以了解最新情况。