#pointers #self-referential #weak #recursion #structure #foo

weak-self

WeakSelf是一种简单的方法,在数据结构内部拥有指向自身的弱指针

3个稳定版本

1.0.2 2020年2月17日
1.0.1 2019年3月30日
1.0.0 2019年3月28日

1185数据结构类别中

Download history 30/week @ 2024-03-28 17/week @ 2024-04-04 1/week @ 2024-05-30

每月下载量66

MIT/Apache

7KB

WeakSelf

Build Status License Cargo Documentation

WeakSelf是在数据结构内部拥有指向自身的弱指针的简单方法。

使用场景

有时你想要创建一个包含指向自身的指针或某些其他递归数据结构的struct

struct Foo {
    me: &Foo
}

impl Foo {
    pub fn new() -> Foo {
        let foo = Foo{
            me: ????
        };
        foo
    }
}

这个库可以帮助你实现这一点

pub struct Foo {
    weak_self: WeakSelf<Foo>
}

impl Foo {
    pub fn new() -> Arc<Foo> {
        let foo = Arc::new(Foo{
            weak_self: WeakSelf::new()
        });
        foo.weak_self.init(&foo);
        foo
    }
    
    fn weak(&self) -> Weak<Self> {
        self.weak_self.get()
    }
}

依赖关系

此包仅依赖于std

用法

要使用WeakSelf,将以下内容添加到你的Cargo.toml

[dependencies]
weakself = "1.0.2"

许可协议

根据MIT许可协议和Apache许可协议(版本2.0)许可。

有关详细信息,请参阅LICENSE-MITLICENSE-APACHE

无运行时依赖