2016-02-09 19:06:24 +00:00
|
|
|
//! Additional functionality for numerics.
|
2013-07-29 22:59:43 +00:00
|
|
|
//!
|
2016-02-09 19:06:24 +00:00
|
|
|
//! This module provides some extra types that are useful when doing numerical
|
|
|
|
//! work. See the individual documentation for each piece for more information.
|
2013-05-28 21:35:52 +00:00
|
|
|
|
2015-01-24 05:48:20 +00:00
|
|
|
#![stable(feature = "rust1", since = "1.0.0")]
|
2014-10-27 22:37:07 +00:00
|
|
|
#![allow(missing_docs)]
|
2013-05-28 21:35:52 +00:00
|
|
|
|
2020-08-27 13:45:01 +00:00
|
|
|
#[cfg(test)]
|
|
|
|
mod tests;
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
mod benches;
|
|
|
|
|
2021-08-10 17:22:06 +00:00
|
|
|
#[unstable(feature = "saturating_int_impl", issue = "87920")]
|
|
|
|
pub use core::num::Saturating;
|
2015-11-16 16:54:28 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
2016-03-07 23:42:29 +00:00
|
|
|
pub use core::num::Wrapping;
|
2019-11-27 18:29:00 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
|
|
|
pub use core::num::{FpCategory, ParseFloatError, ParseIntError, TryFromIntError};
|
2015-01-05 10:14:50 +00:00
|
|
|
|
2019-04-10 03:21:11 +00:00
|
|
|
#[stable(feature = "signed_nonzero", since = "1.34.0")]
|
2019-11-27 18:29:00 +00:00
|
|
|
pub use core::num::{NonZeroI128, NonZeroI16, NonZeroI32, NonZeroI64, NonZeroI8, NonZeroIsize};
|
|
|
|
#[stable(feature = "nonzero", since = "1.28.0")]
|
|
|
|
pub use core::num::{NonZeroU128, NonZeroU16, NonZeroU32, NonZeroU64, NonZeroU8, NonZeroUsize};
|
|
|
|
|
2021-06-22 09:20:56 +00:00
|
|
|
#[stable(feature = "int_error_matching", since = "1.55.0")]
|
2019-04-22 22:15:43 +00:00
|
|
|
pub use core::num::IntErrorKind;
|
|
|
|
|
2019-11-27 18:29:00 +00:00
|
|
|
#[cfg(test)]
|
|
|
|
use crate::fmt;
|
|
|
|
#[cfg(test)]
|
|
|
|
use crate::ops::{Add, Div, Mul, Rem, Sub};
|
2015-04-18 06:45:55 +00:00
|
|
|
|
2013-04-24 10:08:08 +00:00
|
|
|
/// Helper function for testing numeric operations
|
2013-05-04 21:25:41 +00:00
|
|
|
#[cfg(test)]
|
2019-11-27 18:29:00 +00:00
|
|
|
pub fn test_num<T>(ten: T, two: T)
|
|
|
|
where
|
2015-04-18 06:45:55 +00:00
|
|
|
T: PartialEq
|
2019-11-27 18:29:00 +00:00
|
|
|
+ Add<Output = T>
|
|
|
|
+ Sub<Output = T>
|
|
|
|
+ Mul<Output = T>
|
|
|
|
+ Div<Output = T>
|
|
|
|
+ Rem<Output = T>
|
|
|
|
+ fmt::Debug
|
|
|
|
+ Copy,
|
2014-11-10 05:26:10 +00:00
|
|
|
{
|
2019-11-27 18:29:00 +00:00
|
|
|
assert_eq!(ten.add(two), ten + two);
|
|
|
|
assert_eq!(ten.sub(two), ten - two);
|
|
|
|
assert_eq!(ten.mul(two), ten * two);
|
|
|
|
assert_eq!(ten.div(two), ten / two);
|
|
|
|
assert_eq!(ten.rem(two), ten % two);
|
2013-04-21 15:58:53 +00:00
|
|
|
}
|