我的结构如下。我需要从这个结构中过滤数据以用于 2 个场景
pub struct Access {
role: String,
users: Vec<String>,
}
pub struct Department_Access {
department: String,
department_id: String,
access: Vec<Access>,
}
场景 1
我正在获取部门 ID 和用户(单个用户)作为输入,我应该过滤所有部门各自用户包含的访问权限并将整个数据返回到 UI。我尝试如下,其抛出错误为“预期bool
,发现 `core::iter::adapters::Filter
let access_data = get_access_data();
let user_access: Vec<ent::Department_Access> = access_data
.into_iter()
.filter(|r| r.department_id == dept_id)
.into_iter()
.filter(|a| a.access.into_iter().filter(|b| b.members.contains(user)))
.collect();
场景 2
在另一个功能中,我单独接收user
和department
作为参数,它应该在上面的结构中查询并返回他有权访问的所有department_id,我正在努力解决这个问题进行基本形式的查询,也需要您的帮助进行查询!提前致谢
最佳答案
您想使用any
:
let user_access: Vec<Department_Access> = access_data
.into_iter()
.filter(|r| r.department_id == dept_id)
.filter(|a| a.access.iter().any(|b| b.users.contains(&user)))
.collect();
另请记住,into_iter
会消耗该值;您只想在过滤器
中使用iter()
。
关于string - 在 Rust 中查询结构向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67770275/