Rust 无法将所需特征添加到导入的板条箱结构';s构造函数
我正试图在我的Rust应用程序中通过实现一个全局可访问的撤销/重做功能。 我首先创建一个惰性静态文件,其中包含我的应用程序的数据模型,Rust 无法将所需特征添加到导入的板条箱结构';s构造函数,rust,Rust,我正试图在我的Rust应用程序中通过实现一个全局可访问的撤销/重做功能。 我首先创建一个惰性静态文件,其中包含我的应用程序的数据模型,app\u STATE:AppState,它具有类型为undo::history::history的字段history。我的问题是,对于我的所有状态字段,惰性静态需要Send+Sync,虽然我能够在AppState定义(history:history)中定义适当的特征约束,但在AppState::new()中调用history::new()时,我看不到任何添加这些
app\u STATE:AppState
,它具有类型为undo::history::history
的字段history
。我的问题是,对于我的所有状态字段,惰性静态需要Send+Sync
,虽然我能够在AppState
定义(history:history
)中定义适当的特征约束,但在AppState::new()中调用history::new()
时,我看不到任何添加这些特征的选项
:
使用undo::{History};
懒惰的静态::懒惰的静态!{
静态引用APP_STATE:AppState=AppState::new();
}
发布结构AppState{
姓名:Vec,,
历史:历史
//正确的特质约束
}
impl应用状态{
pub fn new()->Self{
AppState{
名称:vec![],
历史记录:历史记录::新建(),
//不确定如何在此处添加这些特征约束
}
}
}
//..
给出错误:
history: History::new(),
^^^^^^^^^^^^^^ expected trait `FnMut(Signal) + Send + Sync`, found trait `FnMut(Signal)`
如果History::new()
没有为我提供任何添加Send+Sync
的方法,这是否意味着我手动实例化了历史
结构?这个问题有哪些解决办法
impl-AppState{
pub fn new()->Self{
AppState{
名称:vec![],
历史:历史{
//字段1
//字段2
//..
},
}
}
}
从以下位置定义undo::history::history
结构:
pub结构历史记录{
根:usize,
下一步:使用,
保存的酒吧(板条箱):选项,
酒吧(板条箱)记录:记录,
酒吧(板条箱)分店:BTreeMap,
}
当F=Box@Deadbeef这是开发者必须改变的东西?鉴于当前版本的undo
,记录
结构有一个允许泛型函数类型的。使用记录
结构获取自己的历史记录
。
pub struct History<A, F = Box<dyn FnMut(Signal)>> {
root: usize,
next: usize,
pub(crate) saved: Option<At>,
pub(crate) record: Record<A, F>,
pub(crate) branches: BTreeMap<usize, Branch<A>>,
}