Skip to content

Commit f43cabb

Browse files
committed
Check availability of Saturating
1 parent 6b1cc86 commit f43cabb

File tree

6 files changed

+20
-4
lines changed

6 files changed

+20
-4
lines changed

.github/workflows/ci.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ jobs:
1111
rust: [
1212
1.60.0, # MSRV
1313
1.62.0, # has_total_cmp
14+
1.74.0, # has_num_saturating
1415
stable,
1516
beta,
1617
nightly,

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,4 @@ std = []
3131
i128 = []
3232

3333
[build-dependencies]
34-
autocfg = "1"
34+
autocfg = "1.2"

build.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
fn main() {
2-
let ac = autocfg::new();
2+
let mut ac = autocfg::new();
3+
ac.set_no_std(true);
34

45
ac.emit_expression_cfg("1f64.total_cmp(&2f64)", "has_total_cmp"); // 1.62
6+
ac.emit_path_cfg("core::num::Saturating", "has_num_saturating"); // 1.74
57

68
autocfg::rerun_path("build.rs");
79
}

ci/rustup.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55
set -ex
66

77
ci=$(dirname $0)
8-
for version in 1.60.0 1.62.0 stable beta nightly; do
8+
for version in 1.60.0 1.62.0 1.74.0 stable beta nightly; do
99
rustup run "$version" "$ci/test_full.sh"
1010
done

src/identities.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
use core::num::{Saturating, Wrapping};
1+
use core::num::Wrapping;
22
use core::ops::{Add, Mul};
33

4+
#[cfg(has_num_saturating)]
5+
use core::num::Saturating;
6+
47
/// Defines an additive identity element for `Self`.
58
///
69
/// # Laws
@@ -95,6 +98,7 @@ where
9598
const ZERO: Self = Wrapping(T::ZERO);
9699
}
97100

101+
#[cfg(has_num_saturating)]
98102
impl<T: Zero> Zero for Saturating<T>
99103
where
100104
Saturating<T>: Add<Output = Saturating<T>>,
@@ -112,6 +116,7 @@ where
112116
}
113117
}
114118

119+
#[cfg(has_num_saturating)]
115120
impl<T: ConstZero> ConstZero for Saturating<T>
116121
where
117122
Saturating<T>: Add<Output = Saturating<T>>,
@@ -220,6 +225,7 @@ where
220225
const ONE: Self = Wrapping(T::ONE);
221226
}
222227

228+
#[cfg(has_num_saturating)]
223229
impl<T: One> One for Saturating<T>
224230
where
225231
Saturating<T>: Mul<Output = Saturating<T>>,
@@ -233,6 +239,7 @@ where
233239
}
234240
}
235241

242+
#[cfg(has_num_saturating)]
236243
impl<T: ConstOne> ConstOne for Saturating<T>
237244
where
238245
Saturating<T>: Mul<Output = Saturating<T>>,
@@ -282,6 +289,7 @@ fn wrapping_is_one() {
282289
}
283290

284291
#[test]
292+
#[cfg(has_num_saturating)]
285293
fn saturating_identities() {
286294
macro_rules! test_saturating_identities {
287295
($($t:ty)+) => {
@@ -298,11 +306,13 @@ fn saturating_identities() {
298306
}
299307

300308
#[test]
309+
#[cfg(has_num_saturating)]
301310
fn saturating_is_zero() {
302311
fn require_zero<T: Zero>(_: &T) {}
303312
require_zero(&Saturating(42));
304313
}
305314
#[test]
315+
#[cfg(has_num_saturating)]
306316
fn saturating_is_one() {
307317
fn require_one<T: One>(_: &T) {}
308318
require_one(&Saturating(42));

src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ where
184184
}
185185
}
186186

187+
#[cfg(has_num_saturating)]
187188
impl<T: Num> Num for core::num::Saturating<T>
188189
where
189190
core::num::Saturating<T>: NumOps,
@@ -581,13 +582,15 @@ fn wrapping_from_str_radix() {
581582
}
582583

583584
#[test]
585+
#[cfg(has_num_saturating)]
584586
fn saturating_is_num() {
585587
fn require_num<T: Num>(_: &T) {}
586588
require_num(&core::num::Saturating(42_u32));
587589
require_num(&core::num::Saturating(-42));
588590
}
589591

590592
#[test]
593+
#[cfg(has_num_saturating)]
591594
fn saturating_from_str_radix() {
592595
macro_rules! test_saturating_from_str_radix {
593596
($($t:ty)+) => {

0 commit comments

Comments
 (0)