1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
/*! These are all of the **marker traits** used in typenum. Note that the definition here for marker traits is slightly different than the conventional one --- we include traits with functions that convert a type to the corresponding value. For example, the `Integer` trait includes the function (among others) `fn to_i32() -> i32` so that one can do this: ``` use typenum::{N42, Integer}; assert_eq!(-42, N42::to_i32()); ``` */ /** A **marker trait** to designate that a type is not zero. All number types in this crate implement `NonZero` except `B0`, `U0`, and `Z0`. */ pub trait NonZero {} /** A **Marker trait** for the types `Greater`, `Equal`, and `Less`. This trait should not be implemented for anything outside this crate. */ pub trait Ord { #[allow(missing_docs)] fn to_ordering() -> ::core::cmp::Ordering; } /** The **marker trait** for compile time bits. This trait should not be implemented for anything outside this crate. */ pub trait Bit { #[allow(missing_docs)] fn to_u8() -> u8; #[allow(missing_docs)] fn to_bool() -> bool; } /** The **marker trait** for compile time unsigned integers. This trait should not be implemented for anything outside this crate. # Example ```rust use typenum::{U3, Unsigned}; assert_eq!(U3::to_u32(), 3); ``` */ pub trait Unsigned { #[allow(missing_docs)] fn to_u8() -> u8; #[allow(missing_docs)] fn to_u16() -> u16; #[allow(missing_docs)] fn to_u32() -> u32; #[allow(missing_docs)] fn to_u64() -> u64; #[allow(missing_docs)] fn to_usize() -> usize; #[allow(missing_docs)] fn to_i8() -> i8; #[allow(missing_docs)] fn to_i16() -> i16; #[allow(missing_docs)] fn to_i32() -> i32; #[allow(missing_docs)] fn to_i64() -> i64; #[allow(missing_docs)] fn to_isize() -> isize; } /** The **marker trait** for compile time signed integers. This trait should not be implemented for anything outside this crate. # Example ```rust use typenum::{P3, Integer}; assert_eq!(P3::to_i32(), 3); ``` */ pub trait Integer { #[allow(missing_docs)] fn to_i8() -> i8; #[allow(missing_docs)] fn to_i16() -> i16; #[allow(missing_docs)] fn to_i32() -> i32; #[allow(missing_docs)] fn to_i64() -> i64; #[allow(missing_docs)] fn to_isize() -> isize; }