如何在Rust中使用BigInt或BigUint生成一系列值?

时间:2019-06-23 08:57:03

标签: rust iterator ownership bignum

我想遍历BigUint类型的num类型的值范围。

我该怎么做?

我尝试过

for i in 0..a {...}

其中a是(借用的)BigUint类型。我收到有关不匹配的整数类型的错误,所以我尝试了以下方法:

for i in Zero::zero()..a {...}

但是根据是否借用a,我会得到不同的错误。 如果借用a,那么我会得到以下错误信息:

|    for i in Zero::zero()..(a) {
|             ^^^^^^^^^^ the trait `num::Zero` is not implemented for `&num::BigUint`

如果未借用a,则为错误:

|    for i in Zero::zero()..(a) {
|             ^^^^^^^^^^^^^^^^^ the trait `std::iter::Step` is not implemented for `num::BigUint`

1 个答案:

答案 0 :(得分:3)

由于unstability of Step trait num板条箱似乎还不支持此功能。

您可以做的是使用num-iter条板箱及其范围函数。

use num::BigUint;

fn main() {
    for i in num_iter::range_inclusive(BigUint::from(0u64), BigUint::from(2u64)) {
        println!("{}", i);
    }
}