我打电话给env::vars_os
并想以功能方式打印所有这些:
env::vars_os()
.map(|(k, v)| println!("k : {:?}, v : {:?} \n", k, v));
这不会打印任何内容,但文章解构和模式匹配表明这应该是可能的。
查看 的文档vars_os()
,我们看到它是元组上的迭代器,其语法为(a, b)
。因此,将您的代码更改为
env::vars_os()
.map(|(k, v)| println!("k : {:?}, v : {:?} \n", k, v));
应该做的伎俩。
您使用的语法会解构为结构体,只是您省略了结构体的名称,该名称位于花括号之前。
Rust 中的迭代器是惰性求值的,这意味着map
在迭代器被消耗之前不会执行中的任何代码。你可以通过调用来做到这一点collect()
。但是,惯用的方法是将具有副作用(例如打印)的代码放入for
循环而不是map
:
for (k, v) in env::vars_os() {
println!("k : {:?}, v : {:?} \n", k, v);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句