WeakSelf is simple way to have a Weak pointer inside a data structure pointing to itself.
Sometimes you want to create a struct
with a pointer to itself or just some other recursive data structure.
struct Foo {
me: &Foo
}
impl Foo {
pub fn new() -> Foo {
let foo = Foo{
me: ????
};
foo
}
}
This create helps you do that:
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()
}
}
This package depends on std only
To use WeakSelf, add this to your Cargo.toml
:
[dependencies]
weakself = "1.0.2"
Licensed under the terms of MIT license and the Apache License (Version 2.0).
See LICENSE-MIT and LICENSE-APACHE for details.