2个版本
使用旧的Rust 2015
0.1.1 | 2016年6月17日 |
---|---|
0.1.0 | 2016年6月17日 |
#14 in #cyclic
9KB
153 行
immutable_arena
:一个用于具有循环引用的不可变构建对象的竞技场
本包实现了一个竞技场,用于创建一旦构建就不可变的对象,除了对竞技场中其他对象的引用。用户在分配时创建对象一次,然后对象存在之后,可以设置特殊智能指针(Ref
实例)到竞技场中的其他对象恰好一次。之后,这些对象将完全不可变。
示例用法
use immutable_arena::{Arena, Ref};
struct S<'arena> {
id: u32,
next: Ref<'arena, S<'arena>>,
}
fn alloc_cycle<'arena>(arena: &'arena Arena<S<'arena>>)
-> &'arena S<'arena> {
let s1 = arena.alloc(S { id: 1, next: Ref::empty() });
let s2 = arena.alloc(S { id: 2, next: Ref::empty() });
s1.next.set(s2);
s2.next.set(s1);
s1
}
fn test_cycle() {
let arena = Arena::new();
let s1 = alloc_cycle(&arena);
assert!(s1.next.next.id == s1.id);
}
immutable_arena
版权所有(c)2016年Chris Fallin <[email protected]>,并发布在MIT许可证下。有关详细信息,请参阅LICENSE
文件。
依赖关系
~36KB