#static #lazy-evaluation #drop #shared #arc

weak_static

用于声明延迟创建和适时释放的静态宏

2 个版本

使用旧 Rust 2015

0.1.1 2017年6月19日
0.1.0 2017年6月17日

#75 in #drop

MIT/Apache

4KB

此软件包提供了一个宏,用于创建在需要时创建并在不再需要时立即释放的静态值。它需要导入 lazy_static 宏。

示例

#[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();
    }
}

输出

new
drop
new
drop

new 打印对应于 _foo1_foo4FOO() 调用。 drop 打印对应于最后一个 FOO 引用被释放。

无运行时依赖