#singleton #derive #connect #internal #explicitly #don't #macro-derive

singleton-derive

singleton derive宏(这是一个内部crate,您无需显式连接它)

1 个不稳定版本

使用旧的Rust 2015

0.1.0 2018年11月14日

#5 in #explicitly

MIT 许可证

3KB

Singleton Derive

Crates.io

文档

此crate提供了一种方便的API,通过仅添加一个struct#[derive(Singleton)]即可将其转换为单例。

示例

extern crate singletonum;
use singletonum::{Singleton, SingletonInit};

#[derive(Debug, PartialEq, Singleton)]
struct SampleSingleton {
    inner: String,
}

impl SingletonInit for SampleSingleton {
    type Init = String;
    fn init(init: &String) -> Self {
        SampleSingleton { inner: init.clone() }
    }
}

#[cfg(test)]
mod tests {
    use super::{SampleSingleton, Singleton};

    #[test]
    fn initialize_and_get() {
        SampleSingleton::get_instance(&String::from("hello, world!"));
        let instance = SampleSingleton::get_instance(&String::from("hello, world!"));
        assert_eq!(
            instance,
            &SampleSingleton { inner: String::from("hello, world!") }
        );
    }
}

贡献

此crate尚不完整,欢迎在issue或通过作者邮箱提出改进建议。也欢迎PR。

依赖项

~2.5MB
~50K SLoC