1- use core:: num:: { Saturating , Wrapping } ;
1+ use core:: num:: Wrapping ;
22use 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
9598 const ZERO : Self = Wrapping ( T :: ZERO ) ;
9699}
97100
101+ #[ cfg( has_num_saturating) ]
98102impl < T : Zero > Zero for Saturating < T >
99103where
100104 Saturating < T > : Add < Output = Saturating < T > > ,
@@ -112,6 +116,7 @@ where
112116 }
113117}
114118
119+ #[ cfg( has_num_saturating) ]
115120impl < T : ConstZero > ConstZero for Saturating < T >
116121where
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) ]
223229impl < T : One > One for Saturating < T >
224230where
225231 Saturating < T > : Mul < Output = Saturating < T > > ,
@@ -233,6 +239,7 @@ where
233239 }
234240}
235241
242+ #[ cfg( has_num_saturating) ]
236243impl < T : ConstOne > ConstOne for Saturating < T >
237244where
238245 Saturating < T > : Mul < Output = Saturating < T > > ,
@@ -282,6 +289,7 @@ fn wrapping_is_one() {
282289}
283290
284291#[ test]
292+ #[ cfg( has_num_saturating) ]
285293fn 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) ]
301310fn saturating_is_zero ( ) {
302311 fn require_zero < T : Zero > ( _: & T ) { }
303312 require_zero ( & Saturating ( 42 ) ) ;
304313}
305314#[ test]
315+ #[ cfg( has_num_saturating) ]
306316fn saturating_is_one ( ) {
307317 fn require_one < T : One > ( _: & T ) { }
308318 require_one ( & Saturating ( 42 ) ) ;
0 commit comments