【问题标题】:Querying a vector of struct in Rust在 Rust 中查询结构向量
【发布时间】:2021-08-18 13:20:10
【问题描述】:

我有一个结构如下。我需要为 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 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,我正在努力做基本的查询形式,需要你的帮助在查询中也是一样!提前致谢

【问题讨论】:

  • 请将帖子限制为单个问题。谢谢。

标签: string vector struct filter rust


【解决方案1】:

你想使用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()

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 1970-01-01
    • 2021-10-07
    • 2020-07-18
    • 2012-07-05
    • 2019-12-06
    • 2017-11-23
    • 1970-01-01
    相关资源
    最近更新 更多