【发布时间】:2021-08-21 10:42:37
【问题描述】:
结构
pub struct UserAccess {
pub user: String,
pub dept: String,
pub hreflink: String,
}
pub struct RoleMembers {
pub role: String,
pub members: Vec<String>,
}
pub struct DepartmentAccess {
pub department: String,
pub department_id: String,
pub role_members: Vec<RoleMembers>,
}
我正在尝试根据来自 UI 的输入(“用户”和“部门”)过滤 DepartmentAccess 结构中的数据,并且需要将“用户”、“部门 ID”和“引用链接”映射到UI 所需的另一个结构 (UserAccess)。但是在构建它时会抛出如下错误。我需要在这里做什么?
代码
let mut v: Vec<UserAccess> = vec![];
let access_data = get_access_data();
let user_data: Vec<UserAccess> = access_data
.into_iter()
.filter(|a| a.department == department && a.role_members.iter().any(|b| b.members.contains(&user)))
.map(|r| {
v.push(UserAccess {
user: user,
dept: r.department_id,
hreflink: format!("department/{}", r.department_id),
})
})
.collect();
错误
value of type `Vec<UserAccess>` cannot be built from `std::iter::Iterator<Item=()>`
|
= help: the trait `FromIterator<()>` is not implemented for `Vec<UserAccess>`
【问题讨论】:
标签: dictionary struct filter rust iterator