繁体   English   中英

查询Rust中struct的向量

[英]Querying a vector of struct in Rust

我有一个结构如下。 我需要为 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<IntoIter, fn(&Access) -> bool> ”。 如何以有效的方式做到这一点?

  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

在另一个功能中,我单独接收userdepartment作为参数,它应该在上面的结构中查询并返回他有权访问的所有部门 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消耗值; 您只想在filter中使用iter()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM