仅使用Rust中的引用计数

时间:2014-02-22 17:07:11

标签: rust

我想编写简单的Rust代码,同时保持运行时的确定性,并且不需要内存周期。

我可以在代码中仅使用引用计数指针吗?

1 个答案:

答案 0 :(得分:1)

Rust不是垃圾收集语言。所有记忆都是free() d确定性的。

fn get() -> Vec<i32> {
    vec![1, 2, 3] // <--- v is allocated here
}

fn main() {
    let v = get();
    for i in v {
        println!("{}", i)
    }
    // <--- v is free()d here
}

如果确实需要引用计数类型,请使用Rc<T>。如果将对象传递给多个线程,则必须使用Arc<T>。您无法意外地使用Rc<T>超过线程边界,因为如果编译器检测到此类使用,则会出错。

Rust Rc<T>Arc<T>是不会检测周期的引用计数数据类型。如果您使用Rc<T>Arc<T>创建一个循环,那么该内存将不会是free()d,并且您将泄漏内存。