我试图做这样的事情,但它无法编译inspect
的闭包参数:
fn main() {
vec!(1, 2, 3, 4)
.windows(2)
.inspect(|&&a[]| println!("{} {}", a[0], a[1]))
.count();
}
我尝试过移动切片名称a
,但无法找到编译器理解的最佳位置。
答案 0 :(得分:3)
直接的答案是使用冒号,就像你定义参数类型的其他地方一样:
fn main() {
vec!(1, 2, 3, 4)
.windows(2)
.inspect(|a: &&[u8]| println!("{} {}", a[0], a[1]))
.count();
}
正如Matthieu M.所指出的那样,没有理由在这里指定一个类型,因为类型推断会处理它:
fn main() {
vec!(1, 2, 3, 4)
.windows(2)
.inspect(|a| println!("{} {}", a[0], a[1]))
.count();
}
为了完整性,您还可以指定闭包的返回类型,但这样做需要闭包体的大括号。同样,这很少需要:
fn main() {
vec!(1, 2, 3, 4)
.windows(2)
.map(|a: &[u8]| -> bool { a[0] % 2 == 0 })
.inspect(|a| println!("{}", a))
.count();
}