std: Clean up primitive integer modules
All of the modules in the standard library were just straight reexports of those in libcore, so remove all the "macro modules" from the standard library and just reexport what's in core directly.
This commit is contained in:
parent
47ea0cfb6b
commit
8cb4d8671a
26 changed files with 84 additions and 312 deletions
|
|
@ -14,6 +14,7 @@ mod tests {
|
|||
use core::$T_i::*;
|
||||
use num;
|
||||
use core::ops::{BitOr, BitAnd, BitXor, Shl, Shr, Not};
|
||||
use std::str;
|
||||
|
||||
#[test]
|
||||
fn test_overflows() {
|
||||
|
|
@ -121,6 +122,35 @@ mod tests {
|
|||
assert!((10 as $T).checked_div(2) == Some(5));
|
||||
assert!((5 as $T).checked_div(0) == None);
|
||||
}
|
||||
}
|
||||
|
||||
fn from_str<T: FromStr>(t: &str) -> Option<T> {
|
||||
FromStr::from_str(t).ok()
|
||||
}
|
||||
|
||||
#[test]
|
||||
pub fn test_from_str() {
|
||||
assert_eq!(from_str::<$T>("0"), Some(0 as $T));
|
||||
assert_eq!(from_str::<$T>("3"), Some(3 as $T));
|
||||
assert_eq!(from_str::<$T>("10"), Some(10 as $T));
|
||||
assert_eq!(from_str::<u32>("123456789"), Some(123456789 as u32));
|
||||
assert_eq!(from_str::<$T>("00100"), Some(100 as $T));
|
||||
|
||||
assert_eq!(from_str::<$T>(""), None);
|
||||
assert_eq!(from_str::<$T>(" "), None);
|
||||
assert_eq!(from_str::<$T>("x"), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
pub fn test_parse_bytes() {
|
||||
assert_eq!($T::from_str_radix("123", 10), Ok(123 as $T));
|
||||
assert_eq!($T::from_str_radix("1001", 2), Ok(9 as $T));
|
||||
assert_eq!($T::from_str_radix("123", 8), Ok(83 as $T));
|
||||
assert_eq!(u16::from_str_radix("123", 16), Ok(291 as u16));
|
||||
assert_eq!(u16::from_str_radix("ffff", 16), Ok(65535 as u16));
|
||||
assert_eq!($T::from_str_radix("z", 36), Ok(35 as $T));
|
||||
|
||||
assert_eq!($T::from_str_radix("Z", 10).ok(), None::<$T>);
|
||||
assert_eq!($T::from_str_radix("_", 2).ok(), None::<$T>);
|
||||
}
|
||||
|
||||
)}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue