在语言之间跳跃可能会很痛苦 . 一种语言的习语“感觉很好”,并且开始在其他语言中寻找相同的习语 .
在F#中,有一种方法可以在生成器函数的帮助下初始化数组 . Array.init n generator . 现在,我跳到Rust一段时间,我想知道是否有类似的设施或者我是否必须创建自己这样的设施 .
学习Rust standard library documentation about vectors,我找不到任何类似于我要找的东西 .
// Looking for something similar to:
Vec<T>::init(n : usize, generator : F) -> Vec<T>
where F: Fn(usize) -> T {
// ...
}
也许它通过迭代器在Rust中的工作方式不同 . 但我必须承认,Rust迭代器(以及它们无数的味道)对我的简单思想来说仍然有点模糊 .
2 回答
您可以使用带有
map
的range
然后收集结果 .就像在
F#
docs的示例中一样:检查这个live example
虽然@Netwave提供了答案,但我指出了一个使用它的解决方案,它提供了更多的可重用性和可读性 .
或more general way:
基础仍然是@ Netwave的答案 . 你问过你想要的东西:
并且在第二项中确实存在此代码 .