我正在缓存来自 a 中输入的单词HashSet<Rc<String>>。在检查它是否包含在集合中时,我可以以某种方式用作&str该集合的键吗HashSet<String>?
使用 a HashSet<String>,它的工作原理:
use std::rc::Rc;
use std::collections::HashSet;
let input = "";
let string = input.to_string();
let rc_string: Rc<String> = Rc::new(string.clone());
let set: HashSet<String> = [string.clone()].iter().cloned().collect();
assert!(set.contains(&string));
assert!(set.contains(input));
Run Code Online (Sandbox Code Playgroud)
但如果我尝试使用HashSet<Rc<String>>:
let string_cache: HashSet<Rc<String>> = [rc_string.clone()].iter().cloned().collect();
assert!(string_cache.contains(&rc_string));
assert!(string_cache.contains(&string));
assert!(string_cache.contains(input));
Run Code Online (Sandbox Code Playgroud)
然后我得到这个错误:
use std::rc::Rc;
use std::collections::HashSet;
let input = "";
let string = input.to_string();
let rc_string: Rc<String> = Rc::new(string.clone());
let set: HashSet<String> = [string.clone()].iter().cloned().collect();
assert!(set.contains(&string));
assert!(set.contains(input));
Run Code Online (Sandbox Code Playgroud)