@@ -2357,7 +2357,7 @@ impl Iterator for IterU32Digits<'_> {
2357
2357
#[ cfg( u64_digit) ]
2358
2358
impl < ' a > ExactSizeIterator for IterU32Digits < ' a > {
2359
2359
fn len ( & self ) -> usize {
2360
- self . data . len ( ) * 2 - usize:: from ( self . last_hi_is_zero )
2360
+ self . data . len ( ) * 2 - usize:: from ( self . last_hi_is_zero ) - usize :: from ( ! self . next_is_lo )
2361
2361
}
2362
2362
}
2363
2363
@@ -3372,3 +3372,45 @@ fn test_pow_biguint() {
3372
3372
3373
3373
assert_eq ! ( BigUint :: from( 125u8 ) , base. pow( exponent) ) ;
3374
3374
}
3375
+
3376
+ #[ test]
3377
+ fn test_iter_u32_digits ( ) {
3378
+ let n = BigUint :: from ( 5u8 ) ;
3379
+ let mut it = n. iter_u32_digits ( ) ;
3380
+ assert_eq ! ( it. len( ) , 1 ) ;
3381
+ assert_eq ! ( it. next( ) , Some ( 5 ) ) ;
3382
+ assert_eq ! ( it. len( ) , 0 ) ;
3383
+ assert_eq ! ( it. next( ) , None ) ;
3384
+ assert_eq ! ( it. len( ) , 0 ) ;
3385
+ assert_eq ! ( it. next( ) , None ) ;
3386
+
3387
+ let n = BigUint :: from ( 112500000000u64 ) ;
3388
+ let mut it = n. iter_u32_digits ( ) ;
3389
+ assert_eq ! ( it. len( ) , 2 ) ;
3390
+ assert_eq ! ( it. next( ) , Some ( 830850304 ) ) ;
3391
+ assert_eq ! ( it. len( ) , 1 ) ;
3392
+ assert_eq ! ( it. next( ) , Some ( 26 ) ) ;
3393
+ assert_eq ! ( it. len( ) , 0 ) ;
3394
+ assert_eq ! ( it. next( ) , None ) ;
3395
+ }
3396
+
3397
+ #[ test]
3398
+ fn test_iter_u64_digits ( ) {
3399
+ let n = BigUint :: from ( 5u8 ) ;
3400
+ let mut it = n. iter_u64_digits ( ) ;
3401
+ assert_eq ! ( it. len( ) , 1 ) ;
3402
+ assert_eq ! ( it. next( ) , Some ( 5 ) ) ;
3403
+ assert_eq ! ( it. len( ) , 0 ) ;
3404
+ assert_eq ! ( it. next( ) , None ) ;
3405
+ assert_eq ! ( it. len( ) , 0 ) ;
3406
+ assert_eq ! ( it. next( ) , None ) ;
3407
+
3408
+ let n = BigUint :: from ( 18_446_744_073_709_551_616u128 ) ;
3409
+ let mut it = n. iter_u64_digits ( ) ;
3410
+ assert_eq ! ( it. len( ) , 2 ) ;
3411
+ assert_eq ! ( it. next( ) , Some ( 0 ) ) ;
3412
+ assert_eq ! ( it. len( ) , 1 ) ;
3413
+ assert_eq ! ( it. next( ) , Some ( 1 ) ) ;
3414
+ assert_eq ! ( it. len( ) , 0 ) ;
3415
+ assert_eq ! ( it. next( ) , None ) ;
3416
+ }
0 commit comments