1 个不稳定版本
使用旧的Rust 2015
0.1.0 | 2018年11月14日 |
---|
#5 in #explicitly
3KB
Singleton Derive
此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