Я хотел бы изменить объекты, хранящиеся в коллекции Rust (BTreeSet).
Я хочу добиться чего-то вроде следующего здесь :
use std::collections::BTreeSet;
#[derive(Eq, PartialEq, Ord, PartialOrd, Debug)]
struct X {
key: String,
val: Option<i32>,
}
fn main() {
let mut set: BTreeSet<X> = BTreeSet::new();
set.insert(X {
key: "a".to_string(),
val: Some(1),
});
set.insert(X {
key: "b".to_string(),
val: Some(1),
});
nonify(&mut set, "a".to_string());
println!("{:?}", set);
}
fn nonify(set: &mut BTreeSet<X>, k: String) {
for mut s in set.iter() {
if s.key == k {
s.val = None;
}
}
}
Thisне работает, потому что s не является изменяемой ссылкой.
Как мне сделать что-то подобное в ржавчине?