小编mia*_*lop的帖子

在 Rust 中实现回调系统时遇到问题

(完全公开,这是我的 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)

generics callback lifetime rust

1
推荐指数
1
解决办法
636
查看次数

标签 统计

callback ×1

generics ×1

lifetime ×1

rust ×1