如何有条件地在一个范围或一个反向范围内进行迭代?

时间:2019-05-19 14:50:07

标签: rust iterator range

我有一系列数字要按照升序或降序进行迭代,具体取决于上限是高于还是低于程序中的其他数字-长话短说,在布尔条件下。 / p>

我的第一个想法是将范围分配给变量,或者如果满足条件,则将<foobar>: push %ebp mov %esp, %ebp sub $0x28,%esp ; Local storage mov $0x804867D, %eax mov 0x8(%ebp), %edx ; First/only parameter of foobar mov %edx, -0x28(%ebp) ; ... becomes only parameter call *%eax ; ... for the code at 0x0804867D mov %ebp, %esp pop %ebp ret 调用的结果分配给

.rev()

不幸的是,范围是范围,// does not work: let mut range = 0..100; if condition { range = range.rev(); } for n in range { // do stuff } 返回.rev(),Rust不允许这种转换。

我想我可以使用一个临时向量,并通过在原始范围或range.rev()上进行迭代来填充它,但我认为有一种更简洁,不太聪明的方法来实现此目的。

0 个答案:

没有答案