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

如何在Rust中使用BigInt或BigUint生成一系列值?,rust,iterator,ownership,bignum,Rust,Iterator,Ownership,Bignum,我想从num板条箱循环一系列具有BigUint类型的值 我该怎么做 我试过了 for i in 0..a {...} 其中a是借用的BigUint类型。我遇到了一个关于不匹配整数类型的错误,因此我尝试了以下方法: for i in Zero::zero()..a {...} 但根据a是否被借用,我会得到不同的错误。 如果a是借来的,那么我在错误中得到: |对于零中的i::零..a{ |^^^^^^^^ `&num::BigUint未实现特性'num::Zero'` 如果未借用,则这是错误:

我想从num板条箱循环一系列具有BigUint类型的值

我该怎么做

我试过了

for i in 0..a {...}
其中a是借用的BigUint类型。我遇到了一个关于不匹配整数类型的错误,因此我尝试了以下方法:

for i in Zero::zero()..a {...}
但根据a是否被借用,我会得到不同的错误。 如果a是借来的,那么我在错误中得到:

|对于零中的i::零..a{ |^^^^^^^^ `&num::BigUint未实现特性'num::Zero'` 如果未借用,则这是错误:

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

由于以下原因,num板条箱中似乎还不支持此功能

你可以做的是使用板条箱的范围功能

use num::BigUint;

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

有趣的是,Step-trait是如何不稳定的?@user668074-stable并不意味着它有bug或不能正常工作,它只是意味着设计可能仍然会改变,因此它只能在每晚的Rust构建中使用,而不承担向后兼容性的负担。Rust团队不会急于稳定新的API,因为很难实现如果第一次设计不正确,请稍后更改它们。@PeterHall,啊,我明白了。很高兴知道。希望它很快就能正确实现。