1#![no_std]
2#![warn(rust_2018_idioms, clippy::dbg_macro, clippy::print_stdout)]
3#![allow(clippy::wrong_self_convention)]
4#![doc = include_str!("../README.md")]
5
6macro_rules! as_trait {
7 ($target_type:ty, $trait_name:ident, $method_name:ident, [$($type:ty),*]) => {
8 #[doc = concat!("A trait for converting to [`", stringify!($target_type), "`].")]
9 pub trait $trait_name {
10 fn $method_name(self) -> $target_type;
11 }
12
13 $(
14 impl $trait_name for $type {
15 #[inline(always)]
16 fn $method_name(self) -> $target_type {
17 self as $target_type
18 }
19 }
20 )*
21 };
22}
23
24as_trait!(
25 i8,
26 AsI8,
27 as_i8,
28 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64, char]
29);
30as_trait!(
31 i16,
32 AsI16,
33 as_i16,
34 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64, char]
35);
36as_trait!(
37 i32,
38 AsI32,
39 as_i32,
40 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64, char]
41);
42as_trait!(
43 i64,
44 AsI64,
45 as_i64,
46 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64, char]
47);
48as_trait!(
49 i128,
50 AsI128,
51 as_i128,
52 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64, char]
53);
54as_trait!(
55 isize,
56 AsIsize,
57 as_isize,
58 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64, char]
59);
60as_trait!(
61 u8,
62 AsU8,
63 as_u8,
64 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64, char]
65);
66as_trait!(
67 u16,
68 AsU16,
69 as_u16,
70 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64, char]
71);
72as_trait!(
73 u32,
74 AsU32,
75 as_u32,
76 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64, char]
77);
78as_trait!(
79 u64,
80 AsU64,
81 as_u64,
82 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64, char]
83);
84as_trait!(
85 u128,
86 AsU128,
87 as_u128,
88 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64, char]
89);
90as_trait!(
91 usize,
92 AsUsize,
93 as_usize,
94 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64, char]
95);
96as_trait!(
97 f32,
98 AsF32,
99 as_f32,
100 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64]
101);
102as_trait!(
103 f64,
104 AsF64,
105 as_f64,
106 [i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, f32, f64]
107);
108as_trait!(char, AsChar, as_char, [u8, char]);