< 返回版块

heliping 发表于 2023-06-16 10:09

pub static SHMDISPATCHER: OnceCell<ShmDispatcher<T>> = OnceCell::new();

#[derive(Debug, Clone)]
pub struct ShmDispatcher<T: Message> {
    pub msg_listeners_: HashMap<u64, fn(T)>
}

提示报错

cannot find type `T` in this scope
not found in this scope

评论区

写评论
潜水的猫 2023-06-21 18:22
pub static SHMDISPATCHER: OnceCell<ShmDispatcher<Message>> = OnceCell::new();

这样的吧,你那不是有Message限制吗?这里也用就行

hax10 2023-06-16 15:56

这行里头

pub static SHMDISPATCHER: OnceCell<ShmDispatcher<T>> = OnceCell::new();

就不能用泛型了

要用一个已实现过Message特征(trait)的类型。你自己定义一个实现Message特征的结构体也可以。

pub struct MyMessageType {
    // 自己写相关字段
}

impl Message for MyMessageType {
    // 按Message特征具体要求实现相关函数
}
SethWen 2023-06-16 11:11

你这都初始化了,应该写具体得类型了,就不能 T 了。

1 共 3 条评论, 1 页