1use super::macros::*;
14use super::{DataType, DataTypeCopy, DataUnit, DataUnitCopy};
15
16use crate::all::BitArray;
17
18#[cfg(feature = "unsafe_unit")]
19use super::DataRaw;
20
21#[cfg(not(feature = "half"))]
27mod half {
28 #![allow(dead_code)]
29 pub struct f16;
30 pub struct bf16;
31}
32#[cfg(not(feature = "twofloat"))]
33mod twofloat {
34 #![allow(dead_code)]
35 pub struct TwoFloat;
36}
37
38#[cfg(not(feature = "num-rational"))]
41mod num_rational {
42 #![allow(dead_code)]
43 pub struct Ratio;
44}
45
46#[cfg(not(feature = "num-bigint"))]
47mod num_bigint {
48 #![allow(dead_code)]
49 pub struct BigInt;
50}
51#[cfg(not(feature = "rust_decimal"))]
52mod rust_decimal {
53 #![allow(dead_code)]
54 pub struct Decimal;
55}
56
57#[cfg(not(feature = "arraystring"))]
60mod arraystring {
61 #![allow(dead_code)]
62 pub struct ArrayString<T> {
63 _t: T,
64 }
65}
66#[cfg(feature = "arraystring")]
67use arraystring::{typenum, ArrayString};
68
69#[cfg(not(feature = "fugit"))]
72mod fugit {
73 #![allow(dead_code)]
74 pub struct Instant<T, const A: usize, B: Into<usize>> {
75 _t: T,
76 _b: B,
77 }
78 pub struct Duration<T, const A: usize, B: Into<usize>> {
79 _t: T,
80 _b: B,
81 }
82}
83#[cfg(not(feature = "time"))]
84mod time {
85 #![allow(dead_code)]
86 pub struct Date;
87 pub struct Time;
88 pub struct Instant;
89 pub struct UtcOffset;
90 pub struct OffsetDateTime;
91 pub struct PrimitiveDateTime;
92 pub struct Duration;
93}
94
95define_all_sizes! {
103 DataType, DataUnit, DataRaw,
105
106 copy_variants_1B:
108 "8-bit unsigned integer ", U8, u8,
109 "8-bit signed integer", I8, i8,
110 "1-Byte array of bytes", ByteArray1, [u8; 1],
111 "Boolean value", Bool, bool,
112 "8-bit Array of bits", BitArray8, BitArray<(), 8, 1>,
113 copy_variants_1B_dep: ,
114 copy_variants_1B_psize:
115 "8-bit usize", Usize, usize, target_pointer_width = "8",
116 "8-bit isize", Isize, isize, target_pointer_width = "8",
117 copy_variants_1B_psize_dep: ,
118
119 noncopy_variants_1B: ,
120 noncopy_variants_1B_dep: ,
121 noncopy_variants_1B_psize: ,
122 noncopy_variants_1B_psize_dep: ,
123
124 copy_variants_2B:
126 "16-bit unsigned integer ", U16, u16,
127 "16-bit signed integer", I16, i16,
128 "2-Byte array of bytes", ByteArray2, [u8; 2],
129 "16-bit Array of bits", BitArray16, BitArray<(), 16, 2>,
130 copy_variants_2B_dep:
131 "16-bit [`half`](https://crates.io/crates/half)'s `binary16` floating-point number",
132 F16, half::f16, "half", "half",
133 "16-bit [`half`](https://crates.io/crates/half)'s `bfloat16` floating-point number",
134 BF16, half::bf16, "half", "half",
135 "2-Byte [`arraystring`](https://crates.io/crates/arraystring)'s ArrayString of len()=1",
136 ArrayString1, ArrayString<typenum::U1>, "arraystring", "arraystring",
137 copy_variants_2B_psize:
138 "16-bit usize", Usize, usize, target_pointer_width = "16",
139 "16-bit isize", Isize, isize, target_pointer_width = "16",
140 copy_variants_2B_psize_dep: ,
141
142 noncopy_variants_2B: ,
143 noncopy_variants_2B_dep: ,
144 noncopy_variants_2B_psize: ,
145 noncopy_variants_2B_psize_dep: ,
146
147 copy_variants_4B:
149 "32-bit unsigned integer ", U32, u32,
150 "32-bit signed integer", I32, i32,
151 "32-bit floating-point number", F32, f32,
152 "4-Byte array of bytes", ByteArray4, [u8; 4],
153 "32-bit Array of bits", BitArray32, BitArray<(), 32, 4>,
154 "4-Byte char ", Char, char,
155 copy_variants_4B_dep:
156 "4-Byte [`arraystring`](https://crates.io/crates/arraystring)'s ArrayString of len()=3",
157 ArrayString3, ArrayString<typenum::U3>, "arraystring", "arraystring",
158 "32-bit [`time`](https://crates.io/crates/time)'s `Date`",
159 TDate, time::Date, "time", "time",
160 "32-bit [`time`](https://crates.io/crates/time)'s `UtcOffset`",
161 TUtcOffset, time::UtcOffset, "time", "time",
162 "32-bit [`fugit`](https://crates.io/crates/fugit)'s `Duration` in hours",
163 FugitDuration32Hours, fugit::Duration<u32, 3_600, 1>, "fugit", "fugit",
164 "32-bit [`fugit`](https://crates.io/crates/fugit)'s `Duration` in minutes",
165 FugitDuration32Minutes, fugit::Duration<u32, 60, 1>, "fugit", "fugit",
166 "32-bit [`fugit`](https://crates.io/crates/fugit)'s `Duration` in seconds",
167 FugitDuration32Seconds, fugit::Duration<u32, 1, 1>, "fugit", "fugit",
168 "32-bit [`fugit`](https://crates.io/crates/fugit)'s `Duration` in milliseconds",
169 FugitDuration32Millis, fugit::Duration<u32, 1, 1_000>, "fugit", "fugit",
170 "32-bit [`fugit`](https://crates.io/crates/fugit)'s `Duration` in nanoseconds",
171 FugitDuration32Nanos, fugit::Duration<u32, 1, 1_000_000>, "fugit", "fugit",
172 "32-bit [`fugit`](https://crates.io/crates/fugit)'s `Instant` in hours",
173 FugitInstant32Hours, fugit::Instant<u32, 3_600, 1>, "fugit", "fugit",
174 "32-bit [`fugit`](https://crates.io/crates/fugit)'s `Instant` in minutes",
175 FugitInstant32Minutes, fugit::Instant<u32, 60, 1>, "fugit", "fugit",
176 "32-bit [`fugit`](https://crates.io/crates/fugit)'s `Instant` in seconds",
177 FugitInstant32Seconds, fugit::Instant<u32, 1, 1>, "fugit", "fugit",
178 "32-bit [`fugit`](https://crates.io/crates/fugit)'s `Instant` in milliseconds",
179 FugitInstant32Millis, fugit::Instant<u32, 1, 1_000>, "fugit", "fugit",
180 "32-bit [`fugit`](https://crates.io/crates/fugit)'s `Instant` in nanoseconds",
181 FugitInstant32Nanos, fugit::Instant<u32, 1, 1_000_000>, "fugit", "fugit",
182 copy_variants_4B_psize:
183 "32-bit usize", Usize, usize, target_pointer_width = "32",
184 "32-bit isize", Isize, isize, target_pointer_width = "32",
185 copy_variants_4B_psize_dep: ,
186
187 noncopy_variants_4B: ,
188 noncopy_variants_4B_dep: ,
189 noncopy_variants_4B_psize: ,
190 noncopy_variants_4B_psize_dep: ,
191
192 copy_variants_8B:
194 "64-bit unsigned integer ", U64, u64,
195 "64-bit signed integer", I64, i64,
196 "64-bit floating-point number", F64, f64,
197 "8-Byte array of bytes", ByteArray8, [u8; 8],
198 "64-bit Array of bits", BitArray64, BitArray<(), 64, 8>,
199 copy_variants_8B_dep:
200 "32-bit [`num_rational`](https://crates.io/crates/num_rational)'s `Ratio` rational number",
201 R32, num_rational::Ratio<i32>, "num-rational", "num-rational",
202 "8-Byte [`arraystring`](https://crates.io/crates/arraystring)'s ArrayString of len()=7",
203 ArrayString7, ArrayString<typenum::U7>, "arraystring", "arraystring",
204 "64-bit [`time`](https://crates.io/crates/time)'s `Time`",
205 TTime, time::Time, "time", "time",
206 "64-bit [`fugit`](https://crates.io/crates/fugit)'s `Duration` in hours",
207 FugitDuration64Hours, fugit::Duration<u64, 3_600, 1>, "fugit", "fugit",
208 "64-bit [`fugit`](https://crates.io/crates/fugit)'s `Duration` in minutes",
209 FugitDuration64Minutes, fugit::Duration<u64, 60, 1>, "fugit", "fugit",
210 "64-bit [`fugit`](https://crates.io/crates/fugit)'s `Duration` in seconds",
211 FugitDuration64Seconds, fugit::Duration<u64, 1, 1>, "fugit", "fugit",
212 "64-bit [`fugit`](https://crates.io/crates/fugit)'s `Duration` in milliseconds",
213 FugitDuration64Millis, fugit::Duration<u64, 1, 1_000>, "fugit", "fugit",
214 "64-bit [`fugit`](https://crates.io/crates/fugit)'s `Duration` in nanoseconds",
215 FugitDuration64Nanos, fugit::Duration<u64, 1, 1_000_000>, "fugit", "fugit",
216 "64-bit [`fugit`](https://crates.io/crates/fugit)'s `Instant` in hours",
217 FugitInstant64Hours, fugit::Instant<u64, 3_600, 1>, "fugit", "fugit",
218 "64-bit [`fugit`](https://crates.io/crates/fugit)'s `Instant` in minutes",
219 FugitInstant64Minutes, fugit::Instant<u64, 60, 1>, "fugit", "fugit",
220 "64-bit [`fugit`](https://crates.io/crates/fugit)'s `Instant` in seconds",
221 FugitInstant64Seconds, fugit::Instant<u64, 1, 1>, "fugit", "fugit",
222 "64-bit [`fugit`](https://crates.io/crates/fugit)'s `Instant` in milliseconds",
223 FugitInstant64Millis, fugit::Instant<u64, 1, 1_000>, "fugit", "fugit",
224 "64-bit [`fugit`](https://crates.io/crates/fugit)'s `Instant` in nanoseconds",
225 FugitInstant64Nanos, fugit::Instant<u64, 1, 1_000_000>, "fugit", "fugit",
226 copy_variants_8B_psize:
227 "64-bit usize", Usize, usize, target_pointer_width = "64",
228 "64-bit isize", Isize, isize, target_pointer_width = "64",
229 copy_variants_8B_psize_dep: ,
230
231 noncopy_variants_8B: ,
232 noncopy_variants_8B_dep: ,
233 noncopy_variants_8B_psize: ,
234 noncopy_variants_8B_psize_dep:
235 "6-Byte fat-pointer String", String, std::string::String,
236 target_pointer_width = "16", "std", "std",
237
238 copy_variants_16B:
240 "128-bit unsigned integer ", U128, u128,
241 "128-bit signed integer", I128, i128,
242 "16-Byte array of bytes", ByteArray16, [u8; 16],
243 "128-bit Array of bits", BitArray128, BitArray<(), 128, 16>,
244 "128-bit Duration", Duration, core::time::Duration,
245 copy_variants_16B_dep:
246 "64-bit [`num_rational`](https://crates.io/crates/num_rational)'s `Ratio` rational number",
247 R64, num_rational::Ratio<i64>, "num-rational", "num-rational",
248 "16-Byte [rust_decimal] Decimal number",
249 Decimal, rust_decimal::Decimal, "rust_decimal", "rust_decimal",
250 "16-Byte [`arraystring`](https://crates.io/crates/arraystring)'s ArrayString of len()=15",
251 ArrayString15, ArrayString<typenum::U15>, "arraystring", "arraystring",
252 "128-bit [`time`](https://crates.io/crates/time)'s `Duration`",
253 TDuration, time::Duration, "time", "time",
254 "128-bit [`time`](https://crates.io/crates/time)'s `PrimitiveDateTime`",
255 TDateTime, time::PrimitiveDateTime, "time", "time",
256 "128-bit [`time`](https://crates.io/crates/time)'s `OffsetDateTime`",
257 TOffsetDateTime, time::OffsetDateTime, "time", "time",
258 "128-bit floating point number",
259 F128, twofloat::TwoFloat, "std", "twofloat",
260 "128-bit Instant",
261 Instant, std::time::Instant, "std", "std",
262 "128-bit SystemTime",
263 SystemTime, std::time::SystemTime, "std", "std",
264 "128-bit [`time`](https://crates.io/crates/time)'s Instant`",
265 TInstant, time::Instant, "std", "time",
266 copy_variants_16B_psize:
267 "128-bit usize", Usize, usize, target_pointer_width = "128",
268 "128-bit isize", Isize, isize, target_pointer_width = "128",
269 copy_variants_16B_psize_dep: ,
270
271 noncopy_variants_16B: ,
272 noncopy_variants_16B_dep: ,
273 noncopy_variants_16B_psize: ,
274 noncopy_variants_16B_psize_dep:
275 "12-Byte fat-pointer String", String, std::string::String,
276 target_pointer_width = "32", "std", "std",
277
278 copy_variants_32B:
280 "32-Byte array of bytes", ByteArray32, [u8; 32],
281 "256-bit Array of bits", BitArray256, BitArray<(), 256, 32>,
282 copy_variants_32B_dep:
283 "128-bit rational number", R128, num_rational::Ratio<i128>, "num-rational", "num-rational",
284 "32-Byte [`arraystring`](https://crates.io/crates/arraystring)'s ArrayString of len()=31",
285 ArrayString31, ArrayString<typenum::U31>, "arraystring", "arraystring",
286 copy_variants_32B_psize: ,
287 copy_variants_32B_psize_dep: ,
288
289 noncopy_variants_32B: ,
290 noncopy_variants_32B_dep:
291 "Big Integer", BigInt, num_bigint::BigInt, "num-bigint", "num-bigint",
292 noncopy_variants_32B_psize: ,
293 noncopy_variants_32B_psize_dep:
294 "24-Byte fat-pointer String", String, std::string::String,
295 target_pointer_width = "64", "std", "std",
296
297 copy_variants_64B:
299 "64-Byte array of bytes", ByteArray64, [u8; 64],
300 "512-bit Array of bits", BitArray512, BitArray<(), 512, 64>,
301 copy_variants_64B_dep:
302 "64-Byte [`arraystring`](https://crates.io/crates/arraystring)'s ArrayString of len()=63",
303 ArrayString63, ArrayString<typenum::U63>, "arraystring", "arraystring",
304 copy_variants_64B_psize: ,
305 copy_variants_64B_psize_dep: ,
306
307 noncopy_variants_64B: ,
308 noncopy_variants_64B_dep: ,
309 noncopy_variants_64B_psize: ,
310 noncopy_variants_64B_psize_dep:
311 "48-Byte fat-pointer String", String, std::string::String,
312 target_pointer_width = "128", "std", "std",
313
314 copy_variants_128B:
316 "128-Byte array of bytes", ByteArray128, [u8; 128],
317 "1024-bit Array of bits", BitArray1024, BitArray<(), 1024, 128>,
318 copy_variants_128B_dep:
319 "128-Byte [`arraystring`](https://crates.io/crates/arraystring)'s ArrayString of len()=127",
320 ArrayString127, ArrayString<typenum::U127>, "arraystring", "arraystring",
321 copy_variants_128B_psize: ,
322 copy_variants_128B_psize_dep: ,
323
324 noncopy_variants_128B: ,
325 noncopy_variants_128B_dep: ,
326 noncopy_variants_128B_psize: ,
327 noncopy_variants_128B_psize_dep: ,
328}