Rust说,即使设置了适当的生命周期,功能参数的寿命也不够

问题描述

对于背景上下文:我正在创建一个基于观察者/订阅者的全局事件系统(使用单个共享事件系统)。我决定使用FnMut作为回调闭包。置于临时结构'a的{​​{1}}上的生存期impl应该使方法Data<'a>中的callback参数能够生存到整个{{ 1}}结构。因为mut_func()参数使用Data泛型,所以它肯定受生存期callback约束。但是错误仍然出现,表明F参数的寿命不足。

我最初使用'a作为callback的容器,但是Box<T>要求回调为dyn FnMut(u32)(因为我将装箱的泛型转换为一个盒子特质对象)(在我的情况下是无法实现的(出于可读性考虑)。然后,我尝试使用Box<T>,但不幸的是它不支持特征对象。

此外,我正在对'static参数使用泛型,因为我希望该函数具有更高的可读性,而不必看到Rc<RefCell<T>>会包裹整个 的闭包随处可见,因为此事件系统将成为我程序的中心部分。我将尽一切努力使“前端”更具可读性和简洁性(对性能的重大影响除外)。

注意:这是我的示例程序。如果需要,我可以发布实际程序。

错误:

callback

示例:

Box<T>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)