Crate weak_static [−] [src]
This crate provides a macro to create a static value that gets created when needed
and dropped as soon as its not needed anymore.
It requires the lazy_static
macro to be imported.
Example
#[macro_use] extern crate lazy_static; #[macro_use] extern crate weak_static; struct Foo; impl Foo { fn new() -> Self { println!("new"); Foo } } impl Drop for Foo { fn drop(&mut self) { println!("drop"); } } weak_static! { static FOO: Foo = Foo::new(); } fn main() { { let _foo1 = FOO(); let _foo2 = FOO(); let _foo3 = FOO(); } { let _foo4 = FOO(); let _foo5 = FOO(); let _foo6 = FOO(); } }
Outputs:
new
drop
new
drop
The new
prints corresponds to the FOO()
calls of _foo1
and _foo4
.
The drop
prints correspond to the last FOO reference being dropped.
Macros
weak_static |