【发布时间】:2022-08-02 23:41:04
【问题描述】:
我有一个 LdapConn,我将它传递给多个函数。 目前我正在将 ldap 变量传递给一个函数,然后返回它。在函数内部,我没有对 ldapConn 进行任何危险的修改,我只是更改了搜索结果部分。传递它是可行的,但是使变量持续我的程序长度的最佳方法是什么?
//main.rs
let mut ldap: LdapConn = LdapConn::with_settings(
LdapConnSettings::new()
.set_no_tls_verify(true)
.set_starttls(true),
\"ldaps://ldap.example.com:636\",
)
.unwrap();
//other_file.rs
pub fn get_group_members(group: &str, mut conn: LdapConn) -> (LdapConn, Vec<String>) {
let (s_filter, ou) = split_dn(group);
let search_result = conn
.search(
&ou,
Scope::Subtree,
&format!(\"(&(objectClass=group)({}))\", s_filter),
vec![\"member\"],
)
.unwrap();
let resp: Vec<
std::collections::HashMap<std::string::String, std::vec::Vec<std::string::String>>,
> = search_result
.0
.iter()
.map(|x| SearchEntry::construct(x.clone()).attrs)
.collect();
(conn, trim_users(resp[0].get(\"member\").unwrap().to_vec()))
}
//main.rs
let (ldap, users) = get_group_members(group, ldap);
标签: rust