【发布时间】:2020-12-31 22:43:32
【问题描述】:
代码sn-p是:
use std::collections::HashSet;
fn main() {
let dna = String::from("ACCCX");
let dict: HashSet<char> = vec!['A', 'C', 'G', 'T'].into_iter().collect();
println!("{}", dna.chars().all(|&x| dict.contains(x)));
}
编译显示的错误是:
error[E0308]: mismatched types
--> src/main.rs:6:37
|
6 | println!("{}", dna.chars().all(|&x| dict.contains(x)));
| ^--
| ||
| |expected due to this
| expected `char`, found reference
| help: did you mean `x`: `&char`
|
= note: expected type `char`
found reference `&_`
不知道为什么&x不能被推断为&char,我提到的链接是:
- https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.all
- https://doc.rust-lang.org/std/collections/struct.HashSet.html#method.contains
谢谢!
【问题讨论】:
-
我刚开始学习 Rust,但我的方法是尝试一堆排列
&的位置。尝试只使用|x|。尝试在x参数前添加一个。尝试两者都有... -
@Lagerbaer 在符号汤中到处乱窜可能是让您的代码编译的一种方法,但了解为什么一种方法有效而另一种方法并不能阻止您在未来乱窜。