簡體   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