2个不稳定版本

使用旧的 Rust 2015

0.2.0 2018年11月14日
0.1.0 2018年11月14日

#singleton中排名第36

MIT许可协议

2KB

单例 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。

依赖项

~4MB
~74K SLoC