小编Vic*_*mov的帖子

检查 HashSet<Rc<String>> 中是否包含字符串切片,而不分配新的 String

我正在缓存来自 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)

smart-pointers hashset rust borrowing

5
推荐指数
1
解决办法
885
查看次数

标签 统计

borrowing ×1

hashset ×1

rust ×1

smart-pointers ×1