大约 13 分钟
为什么要类型擦除
这里的类型擦除和通常我们听到的,在 Java 里的类型擦除不太一样,这里的类型擦除是指,通过某些手段,屏蔽掉一些我们不关心的范型,从而达到统一存储的目的,这样说可能很抽象,直接看代码
pub trait Source{
type Event
pub fn poll(&self)->Result<Self::Event,SourceError>
}
pub struct SourceEntry<S:Source,T>{
source:S,
callback: Box<dyn Fn(S::Event,T)>
}
pub struct SourceList<S:Source,T>{
sources:Vec<Rc<RefCell<SourceEntry<S,T>>>>
}
大约 3 分钟
大约 32 分钟
背景
交流过程可见于 Github Discussions。起因是我在学习 rust 的一个 PEG(Parser Expression Generator)库来实现编译器的时候,看到了这段示例代码 nano_rs,当我把它复制进我的项目中时发生了报错
大约 2 分钟