Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 无法将所需特征添加到导入的板条箱结构';s构造函数_Rust - Fatal编程技术网

Rust 无法将所需特征添加到导入的板条箱结构';s构造函数

Rust 无法将所需特征添加到导入的板条箱结构';s构造函数,rust,Rust,我正试图在我的Rust应用程序中通过实现一个全局可访问的撤销/重做功能。 我首先创建一个惰性静态文件,其中包含我的应用程序的数据模型,app\u STATE:AppState,它具有类型为undo::history::history的字段history。我的问题是,对于我的所有状态字段,惰性静态需要Send+Sync,虽然我能够在AppState定义(history:history)中定义适当的特征约束,但在AppState::new()中调用history::new()时,我看不到任何添加这些

我正试图在我的Rust应用程序中通过实现一个全局可访问的撤销/重做功能。 我首先创建一个惰性静态文件,其中包含我的应用程序的数据模型,
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>>,
}