【发布时间】:2015-01-03 22:04:36
【问题描述】:
我正在考虑如何在 Rust 中实现斐波那契,并认为我可以使用 fold 来实现。
我想出的是以下内容:
// Editor's note: this code sample predates Rust 1.0 and
// is not valid syntax. The concepts remain valid.
range(2, generations).fold(vec![1u, 1], |data: &mut Vec<uint>, value| {
data.push(data[-2] + data[-1]);
data
}).last()
但是,这不会编译,因为我无法以借用检查器喜欢的方式将data 放入fold。它要么是不可变的,要么被多次借用,或者最后一个 data 超出范围,我无法将 data 返回到 fold。
有没有办法将折叠与Vec 一起使用?还是我必须求助于循环?
【问题讨论】: