rust 如何从字符串中的字符创建一个HashSet?

t9aqgxwy  于 2022-12-19  发布在  其他
关注(0)|答案(2)|浏览(96)

我刚刚开始学习Rust,我还在努力理解它的方法。我正在做的特别的事情是试图找出两个字符串是否有任何共同的字符。在另一种语言中,我可能会通过创建字符串中的两个字符集,并在这些字符集上执行交集来实现这一点。到目前为止,我已经完成了以下工作:在Rust中,我无法从字符串中的字符创建HashSet。我尝试了一些变体:

let lines: Vec<&str> = text_from_file.lines().collect();
let set1 = HashSet::from(lines[0].chars());

使用这个变体,我得到了错误“the trait bound std::collections::HashSet<_, _>: std::convert::From<&[u8]> is not satisfied”。我对Rust的理解还不够,不知道如何解释这个错误。我如何从字符串中的字符创建一个HashSet

luaexgnf

luaexgnf1#

您希望使用HashSet::from_iter()

let lines: Vec<&str> = text_from_file.lines().collect();
let set1: HashSet<char> = HashSet::from_iter(lines[0].chars());
vuktfyat

vuktfyat2#

HashSet::from()需要一个切片作为参数,但lines[0].chars()是一个Chars对象,它是一个迭代器。
要从迭代器创建HashSet,有两种可能性:

let set1: HashSet<char> = lines[0].chars().collect();
let set1: HashSet<char> = HashSet::from_iter(lines[0].chars());

我喜欢第一本,因为它对我来说容易读多了。

相关问题