Skip to content

Commit 1f92024

Browse files
authored
Merge pull request rust-num#300 from cuviper/no-build
Remove the build script
2 parents f34e079 + 9eab65d commit 1f92024

File tree

12 files changed

+682
-693
lines changed

12 files changed

+682
-693
lines changed

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ name = "num-bigint"
1010
repository = "https://github.com/rust-num/num-bigint"
1111
version = "0.4.4"
1212
readme = "README.md"
13-
build = "build.rs"
1413
exclude = ["/ci/*", "/.github/*"]
1514
edition = "2021"
1615
rust-version = "1.60"

build.rs

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/bigrand.rs

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -47,42 +47,42 @@ fn gen_bits<R: Rng + ?Sized>(rng: &mut R, data: &mut [u32], rem: u64) {
4747
}
4848

4949
impl<R: Rng + ?Sized> RandBigInt for R {
50-
#[cfg(not(u64_digit))]
51-
fn gen_biguint(&mut self, bit_size: u64) -> BigUint {
52-
let (digits, rem) = bit_size.div_rem(&32);
53-
let len = (digits + (rem > 0) as u64)
54-
.to_usize()
55-
.expect("capacity overflow");
56-
let mut data = vec![0u32; len];
57-
gen_bits(self, &mut data, rem);
58-
biguint_from_vec(data)
59-
}
60-
61-
#[cfg(u64_digit)]
62-
fn gen_biguint(&mut self, bit_size: u64) -> BigUint {
63-
use core::slice;
64-
65-
let (digits, rem) = bit_size.div_rem(&32);
66-
let len = (digits + (rem > 0) as u64)
67-
.to_usize()
68-
.expect("capacity overflow");
69-
let native_digits = Integer::div_ceil(&bit_size, &64);
70-
let native_len = native_digits.to_usize().expect("capacity overflow");
71-
let mut data = vec![0u64; native_len];
72-
unsafe {
73-
// Generate bits in a `&mut [u32]` slice for value stability
74-
let ptr = data.as_mut_ptr() as *mut u32;
75-
debug_assert!(native_len * 2 >= len);
76-
let data = slice::from_raw_parts_mut(ptr, len);
77-
gen_bits(self, data, rem);
50+
cfg_digit!(
51+
fn gen_biguint(&mut self, bit_size: u64) -> BigUint {
52+
let (digits, rem) = bit_size.div_rem(&32);
53+
let len = (digits + (rem > 0) as u64)
54+
.to_usize()
55+
.expect("capacity overflow");
56+
let mut data = vec![0u32; len];
57+
gen_bits(self, &mut data, rem);
58+
biguint_from_vec(data)
7859
}
79-
#[cfg(target_endian = "big")]
80-
for digit in &mut data {
81-
// swap u32 digits into u64 endianness
82-
*digit = (*digit << 32) | (*digit >> 32);
60+
61+
fn gen_biguint(&mut self, bit_size: u64) -> BigUint {
62+
use core::slice;
63+
64+
let (digits, rem) = bit_size.div_rem(&32);
65+
let len = (digits + (rem > 0) as u64)
66+
.to_usize()
67+
.expect("capacity overflow");
68+
let native_digits = Integer::div_ceil(&bit_size, &64);
69+
let native_len = native_digits.to_usize().expect("capacity overflow");
70+
let mut data = vec![0u64; native_len];
71+
unsafe {
72+
// Generate bits in a `&mut [u32]` slice for value stability
73+
let ptr = data.as_mut_ptr() as *mut u32;
74+
debug_assert!(native_len * 2 >= len);
75+
let data = slice::from_raw_parts_mut(ptr, len);
76+
gen_bits(self, data, rem);
77+
}
78+
#[cfg(target_endian = "big")]
79+
for digit in &mut data {
80+
// swap u32 digits into u64 endianness
81+
*digit = (*digit << 32) | (*digit >> 32);
82+
}
83+
biguint_from_vec(data)
8384
}
84-
biguint_from_vec(data)
85-
}
85+
);
8686

8787
fn gen_bigint(&mut self, bit_size: u64) -> BigInt {
8888
loop {

src/biguint.rs

Lines changed: 64 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -542,14 +542,13 @@ impl BigUint {
542542
pub fn new(digits: Vec<u32>) -> BigUint {
543543
let mut big = Self::ZERO;
544544

545-
#[cfg(not(u64_digit))]
546-
{
547-
big.data = digits;
548-
big.normalize();
549-
}
550-
551-
#[cfg(u64_digit)]
552-
big.assign_from_slice(&digits);
545+
cfg_digit_expr!(
546+
{
547+
big.data = digits;
548+
big.normalize();
549+
},
550+
big.assign_from_slice(&digits)
551+
);
553552

554553
big
555554
}
@@ -571,11 +570,10 @@ impl BigUint {
571570
pub fn assign_from_slice(&mut self, slice: &[u32]) {
572571
self.data.clear();
573572

574-
#[cfg(not(u64_digit))]
575-
self.data.extend_from_slice(slice);
576-
577-
#[cfg(u64_digit)]
578-
self.data.extend(slice.chunks(2).map(u32_chunk_to_u64));
573+
cfg_digit_expr!(
574+
self.data.extend_from_slice(slice),
575+
self.data.extend(slice.chunks(2).map(u32_chunk_to_u64))
576+
);
579577

580578
self.normalize();
581579
}
@@ -1118,59 +1116,61 @@ fn u32_chunk_to_u64(chunk: &[u32]) -> u64 {
11181116
digit
11191117
}
11201118

1121-
/// Combine four `u32`s into a single `u128`.
1122-
#[cfg(any(test, not(u64_digit)))]
1123-
#[inline]
1124-
fn u32_to_u128(a: u32, b: u32, c: u32, d: u32) -> u128 {
1125-
u128::from(d) | (u128::from(c) << 32) | (u128::from(b) << 64) | (u128::from(a) << 96)
1126-
}
1127-
1128-
/// Split a single `u128` into four `u32`.
1129-
#[cfg(any(test, not(u64_digit)))]
1130-
#[inline]
1131-
fn u32_from_u128(n: u128) -> (u32, u32, u32, u32) {
1132-
(
1133-
(n >> 96) as u32,
1134-
(n >> 64) as u32,
1135-
(n >> 32) as u32,
1136-
n as u32,
1137-
)
1138-
}
1139-
1140-
#[cfg(not(u64_digit))]
1141-
#[test]
1142-
fn test_from_slice() {
1143-
fn check(slice: &[u32], data: &[BigDigit]) {
1144-
assert_eq!(BigUint::from_slice(slice).data, data);
1145-
}
1146-
check(&[1], &[1]);
1147-
check(&[0, 0, 0], &[]);
1148-
check(&[1, 2, 0, 0], &[1, 2]);
1149-
check(&[0, 0, 1, 2], &[0, 0, 1, 2]);
1150-
check(&[0, 0, 1, 2, 0, 0], &[0, 0, 1, 2]);
1151-
check(&[-1i32 as u32], &[-1i32 as BigDigit]);
1152-
}
1119+
cfg_32_or_test!(
1120+
/// Combine four `u32`s into a single `u128`.
1121+
#[inline]
1122+
fn u32_to_u128(a: u32, b: u32, c: u32, d: u32) -> u128 {
1123+
u128::from(d) | (u128::from(c) << 32) | (u128::from(b) << 64) | (u128::from(a) << 96)
1124+
}
1125+
);
11531126

1154-
#[cfg(u64_digit)]
1155-
#[test]
1156-
fn test_from_slice() {
1157-
fn check(slice: &[u32], data: &[BigDigit]) {
1158-
assert_eq!(
1159-
BigUint::from_slice(slice).data,
1160-
data,
1161-
"from {:?}, to {:?}",
1162-
slice,
1163-
data
1164-
);
1127+
cfg_32_or_test!(
1128+
/// Split a single `u128` into four `u32`.
1129+
#[inline]
1130+
fn u32_from_u128(n: u128) -> (u32, u32, u32, u32) {
1131+
(
1132+
(n >> 96) as u32,
1133+
(n >> 64) as u32,
1134+
(n >> 32) as u32,
1135+
n as u32,
1136+
)
11651137
}
1166-
check(&[1], &[1]);
1167-
check(&[0, 0, 0], &[]);
1168-
check(&[1, 2], &[8_589_934_593]);
1169-
check(&[1, 2, 0, 0], &[8_589_934_593]);
1170-
check(&[0, 0, 1, 2], &[0, 8_589_934_593]);
1171-
check(&[0, 0, 1, 2, 0, 0], &[0, 8_589_934_593]);
1172-
check(&[-1i32 as u32], &[(-1i32 as u32) as BigDigit]);
1173-
}
1138+
);
1139+
1140+
cfg_digit!(
1141+
#[test]
1142+
fn test_from_slice() {
1143+
fn check(slice: &[u32], data: &[BigDigit]) {
1144+
assert_eq!(BigUint::from_slice(slice).data, data);
1145+
}
1146+
check(&[1], &[1]);
1147+
check(&[0, 0, 0], &[]);
1148+
check(&[1, 2, 0, 0], &[1, 2]);
1149+
check(&[0, 0, 1, 2], &[0, 0, 1, 2]);
1150+
check(&[0, 0, 1, 2, 0, 0], &[0, 0, 1, 2]);
1151+
check(&[-1i32 as u32], &[-1i32 as BigDigit]);
1152+
}
1153+
1154+
#[test]
1155+
fn test_from_slice() {
1156+
fn check(slice: &[u32], data: &[BigDigit]) {
1157+
assert_eq!(
1158+
BigUint::from_slice(slice).data,
1159+
data,
1160+
"from {:?}, to {:?}",
1161+
slice,
1162+
data
1163+
);
1164+
}
1165+
check(&[1], &[1]);
1166+
check(&[0, 0, 0], &[]);
1167+
check(&[1, 2], &[8_589_934_593]);
1168+
check(&[1, 2, 0, 0], &[8_589_934_593]);
1169+
check(&[0, 0, 1, 2], &[0, 8_589_934_593]);
1170+
check(&[0, 0, 1, 2, 0, 0], &[0, 8_589_934_593]);
1171+
check(&[-1i32 as u32], &[(-1i32 as u32) as BigDigit]);
1172+
}
1173+
);
11741174

11751175
#[test]
11761176
fn test_u32_u128() {

0 commit comments

Comments
 (0)