(完全公开,这是我的 reddit 帖子的转发)
首先,我想声明一下,我并不是一名开发人员,而是 Rust 的初学者。我有一个可能很微不足道的问题。
我正在致力于为定制 CPU 实现模拟器。我希望能够挂钩仿真(并稍后进行调试)。我希望为 CPU、挂钩系统和模拟器提供单独的包,并且希望我的 CPU 不知道挂钩系统的实现细节,反之亦然。但我在建模时遇到了问题。
现在,我有类似的东西:
// crate CPU
pub struct Cpu {
hooks: HashMap<VirtAddr, hook::Hook>,
}
impl Cpu {
pub fn add_hook(&mut self, hook: hook::Hook) {
self.hooks.insert(hook.addr(), hook);
}
pub fn step(&mut self) {
hook::hook_before!();
}
}
// crate HOOK
pub struct Hook {
addr: VirtAddr,
callback: Box<dyn FnMut(VirtAddr) -> Result<String>>
}
impl Hook {
pub fn new(
addr: VirtAddr,
callback: impl FnMut(VirtAddr) -> Result<String> + 'static,
) …Run Code Online (Sandbox Code Playgroud)