想实现以下简单的功能,死活编译不过,求助
/* 想实现一个抽象的接口,来给所有模块初始化 */
pub trait IModule: Sync {
fn _initialize(&mut self) -> Result<()>;
fn _unload(&mut self);
}
/* 模块 A */
pub struct A {
tree: BTreeMap<i32, i32>,
}
/* 模块 A,实现接口 IModule */
impl IModule for A {
fn _initialize(&mut self) -> Result<()> {
Ok(())
}
fn _unload(&mut self) {}
}
impl A {
pub fn new() -> Self {
A {
tree: Default::default(),
}
}
}
/* 所有的实例都放到数组里 */
lazy_static! {
static ref s_modules:[&'static IModule; 1] = [&ProcessManager::new()];
}
/* 然后写个循环来初始化 */
pub fn kmm_startup() -> Result<()> {
for m in s_modules.into_iter() {
m._initialize();
}
Ok(())
}
/* 反初始化 */
pub fn kmm_stop() {
for &m in s_modules.into_iter() {
m._unload();
}
}
1
共 3 条评论, 1 页
评论区
写评论rust的全局变量为了防止竞态 死锁等不安全问题 是需要使用arc来包的 建议先看看书比较好
非常感谢~
--
👇
ywxt: