×

Bronze Rust垃圾回收器

消耗积分:0 | 格式:zip | 大小:0.03 MB | 2022-06-16

李伟

分享资料个

授权协议 BSD
开发语言 C/C++ Rust
操作系统 跨平台
软件类型 开源软件

软件简介

Bronze 是用于 Rust 的基于库的垃圾回收器。

Bronze 通过引入一种新的智能指针类型 GcRef 来放宽 Rust 的部分限制,GcRef 描述了一个指向垃圾回收堆位置 (heap location) 的指针。使用 Bronze 时,位于堆栈 (stack) 上的数据具有所有常见的 Rust ownership 要求。但 Bronze 允许将数据移动到堆 (heap)。如果类型的值T在堆上,Bronze 允许GcRef对该值进行任意数量的类型引用。

示例

如果不使用 Bronze,则需要仔细管理引用和生命周期:

pub struct IntContainer {
    n: i32,
}

pub fn set(c: &mut IntContainer, n: i32) {
    c.n = n;
}

pub fn test() {
    let c1 = IntContainer{n: 42};
    let mut c2 = c1;
    
    // Can't use c1 anymore because it's been moved to c2
    set(&mut c2, 42);
}

使用 Bronze

// 
#[derive(Trace, Finalize)]
pub struct IntContainer {
    n: i32,
}

pub fn set(mut c: GcRef, n: i32) {
    c.n = n;
}

pub fn test() {
    let c1 = GcRef::new(IntContainer{n: 42});
    let c2 = c1; 
    // Now c1 and c2 both reference the same object.
    
    set(c2, 42);
    set(c1, 43);
    // Now they both reference an object with value 43.
}
 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !