我正在更新一些使用智能指针和其他内存管理代码的旧 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 之前可以正常工作,但现在无法构建。
~T改为Box<T>. ~expr现在应该是Box::new(expr)。
@T去掉了; 它本来是一个指向垃圾收集对象的指针,但事实并非如此。标准库提供了引用计数指针Rc<T>和Arc<T>,应该涵盖大多数用例。
Rust 在 1.0 之前发生了很大的变化。您可能想阅读The Rust Programming Language以了解最新情况。
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |