@@ -55,7 +55,7 @@ impl u1 {
55
55
pub fn toggle ( self ) -> Self {
56
56
match self {
57
57
Self :: FALSE => u1:: TRUE ,
58
- _ => Self :: FALSE
58
+ _ => Self :: FALSE ,
59
59
}
60
60
}
61
61
}
@@ -115,6 +115,18 @@ macro_rules! new_signed_types {
115
115
}
116
116
}
117
117
118
+
119
+ /// Create a new $name from value
120
+ /// # Safety
121
+ /// - value must fit within the number of bits defined in the type
122
+ pub fn new( value: $signed) -> Option <Self > {
123
+ if value < Self :: MIN || value > Self :: MAX {
124
+ None
125
+ } else {
126
+ Some ( unsafe { Self :: new_unchecked( value) } )
127
+ }
128
+ }
129
+
118
130
pub fn inner_raw( self ) -> $inner {
119
131
self . 0
120
132
}
@@ -251,65 +263,65 @@ macro_rules! new_unsigned_types {
251
263
}
252
264
253
265
new_signed_types ! (
254
- i2 ( 2 , u8 , i8 ) => [ i8 , i16 , i32 , i64 , i128 ] ,
255
- i3 ( 3 , u8 , i8 ) => [ i8 , i16 , i32 , i64 , i128 ] ,
256
- i4 ( 4 , u8 , i8 ) => [ i8 , i16 , i32 , i64 , i128 ] ,
257
- i5 ( 5 , u8 , i8 ) => [ i8 , i16 , i32 , i64 , i128 ] ,
258
- i6 ( 6 , u8 , i8 ) => [ i8 , i16 , i32 , i64 , i128 ] ,
259
- i7 ( 7 , u8 , i8 ) => [ i8 , i16 , i32 , i64 , i128 ] ,
260
- i9 ( 9 , u16 , i16 ) => [ i16 , i32 , i64 , i128 ] ,
261
- i10 ( 10 , u16 , i16 ) => [ i16 , i32 , i64 , i128 ] ,
262
- i11 ( 11 , u16 , i16 ) => [ i16 , i32 , i64 , i128 ] ,
263
- i12 ( 12 , u16 , i16 ) => [ i16 , i32 , i64 , i128 ] ,
264
- i13 ( 13 , u16 , i16 ) => [ i16 , i32 , i64 , i128 ] ,
265
- i14 ( 14 , u16 , i16 ) => [ i16 , i32 , i64 , i128 ] ,
266
- i15 ( 15 , u16 , i16 ) => [ i16 , i32 , i64 , i128 ] ,
267
- i17 ( 17 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
268
- i18 ( 18 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
269
- i19 ( 19 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
270
- i20 ( 20 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
271
- i21 ( 21 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
272
- i22 ( 22 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
273
- i23 ( 23 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
274
- i24 ( 24 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
275
- i25 ( 25 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
276
- i26 ( 26 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
277
- i27 ( 27 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
278
- i28 ( 28 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
279
- i29 ( 29 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
280
- i30 ( 30 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
281
- i31 ( 31 , u32 , i32 ) => [ i32 , i64 , i128 ] ,
282
- i33 ( 33 , u64 , i64 ) => [ i64 , i128 ] ,
283
- i34 ( 34 , u64 , i64 ) => [ i64 , i128 ] ,
284
- i35 ( 35 , u64 , i64 ) => [ i64 , i128 ] ,
285
- i36 ( 36 , u64 , i64 ) => [ i64 , i128 ] ,
286
- i37 ( 37 , u64 , i64 ) => [ i64 , i128 ] ,
287
- i38 ( 38 , u64 , i64 ) => [ i64 , i128 ] ,
288
- i39 ( 39 , u64 , i64 ) => [ i64 , i128 ] ,
289
- i40 ( 40 , u64 , i64 ) => [ i64 , i128 ] ,
290
- i41 ( 41 , u64 , i64 ) => [ i64 , i128 ] ,
291
- i42 ( 42 , u64 , i64 ) => [ i64 , i128 ] ,
292
- i43 ( 43 , u64 , i64 ) => [ i64 , i128 ] ,
293
- i44 ( 44 , u64 , i64 ) => [ i64 , i128 ] ,
294
- i45 ( 45 , u64 , i64 ) => [ i64 , i128 ] ,
295
- i46 ( 46 , u64 , i64 ) => [ i64 , i128 ] ,
296
- i47 ( 47 , u64 , i64 ) => [ i64 , i128 ] ,
297
- i48 ( 48 , u64 , i64 ) => [ i64 , i128 ] ,
298
- i49 ( 49 , u64 , i64 ) => [ i64 , i128 ] ,
299
- i50 ( 50 , u64 , i64 ) => [ i64 , i128 ] ,
300
- i51 ( 51 , u64 , i64 ) => [ i64 , i128 ] ,
301
- i52 ( 52 , u64 , i64 ) => [ i64 , i128 ] ,
302
- i53 ( 53 , u64 , i64 ) => [ i64 , i128 ] ,
303
- i54 ( 54 , u64 , i64 ) => [ i64 , i128 ] ,
304
- i55 ( 55 , u64 , i64 ) => [ i64 , i128 ] ,
305
- i56 ( 56 , u64 , i64 ) => [ i64 , i128 ] ,
306
- i57 ( 57 , u64 , i64 ) => [ i64 , i128 ] ,
307
- i58 ( 58 , u64 , i64 ) => [ i64 , i128 ] ,
308
- i59 ( 59 , u64 , i64 ) => [ i64 , i128 ] ,
309
- i60 ( 60 , u64 , i64 ) => [ i64 , i128 ] ,
310
- i61 ( 61 , u64 , i64 ) => [ i64 , i128 ] ,
311
- i62 ( 62 , u64 , i64 ) => [ i64 , i128 ] ,
312
- i63 ( 63 , u64 , i64 ) => [ i64 , i128 ]
266
+ i2 ( 2 , u8 , i8 ) => [ u8 , u16 , u32 , u64 , u128 ] ,
267
+ i3 ( 3 , u8 , i8 ) => [ u8 , u16 , u32 , u64 , u128 ] ,
268
+ i4 ( 4 , u8 , i8 ) => [ u8 , u16 , u32 , u64 , u128 ] ,
269
+ i5 ( 5 , u8 , i8 ) => [ u8 , u16 , u32 , u64 , u128 ] ,
270
+ i6 ( 6 , u8 , i8 ) => [ u8 , u16 , u32 , u64 , u128 ] ,
271
+ i7 ( 7 , u8 , i8 ) => [ u8 , u16 , u32 , u64 , u128 ] ,
272
+ i9 ( 9 , u16 , i16 ) => [ u16 , u32 , u64 , u128 ] ,
273
+ i10 ( 10 , u16 , i16 ) => [ u16 , u32 , u64 , u128 ] ,
274
+ i11 ( 11 , u16 , i16 ) => [ u16 , u32 , u64 , u128 ] ,
275
+ i12 ( 12 , u16 , i16 ) => [ u16 , u32 , u64 , u128 ] ,
276
+ i13 ( 13 , u16 , i16 ) => [ u16 , u32 , u64 , u128 ] ,
277
+ i14 ( 14 , u16 , i16 ) => [ u16 , u32 , u64 , u128 ] ,
278
+ i15 ( 15 , u16 , i16 ) => [ u16 , u32 , u64 , u128 ] ,
279
+ i17 ( 17 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
280
+ i18 ( 18 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
281
+ i19 ( 19 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
282
+ i20 ( 20 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
283
+ i21 ( 21 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
284
+ i22 ( 22 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
285
+ i23 ( 23 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
286
+ i24 ( 24 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
287
+ i25 ( 25 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
288
+ i26 ( 26 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
289
+ i27 ( 27 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
290
+ i28 ( 28 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
291
+ i29 ( 29 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
292
+ i30 ( 30 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
293
+ i31 ( 31 , u32 , i32 ) => [ u32 , u64 , u128 ] ,
294
+ i33 ( 33 , u64 , i64 ) => [ u64 , u128 ] ,
295
+ i34 ( 34 , u64 , i64 ) => [ u64 , u128 ] ,
296
+ i35 ( 35 , u64 , i64 ) => [ u64 , u128 ] ,
297
+ i36 ( 36 , u64 , i64 ) => [ u64 , u128 ] ,
298
+ i37 ( 37 , u64 , i64 ) => [ u64 , u128 ] ,
299
+ i38 ( 38 , u64 , i64 ) => [ u64 , u128 ] ,
300
+ i39 ( 39 , u64 , i64 ) => [ u64 , u128 ] ,
301
+ i40 ( 40 , u64 , i64 ) => [ u64 , u128 ] ,
302
+ i41 ( 41 , u64 , i64 ) => [ u64 , u128 ] ,
303
+ i42 ( 42 , u64 , i64 ) => [ u64 , u128 ] ,
304
+ i43 ( 43 , u64 , i64 ) => [ u64 , u128 ] ,
305
+ i44 ( 44 , u64 , i64 ) => [ u64 , u128 ] ,
306
+ i45 ( 45 , u64 , i64 ) => [ u64 , u128 ] ,
307
+ i46 ( 46 , u64 , i64 ) => [ u64 , u128 ] ,
308
+ i47 ( 47 , u64 , i64 ) => [ u64 , u128 ] ,
309
+ i48 ( 48 , u64 , i64 ) => [ u64 , u128 ] ,
310
+ i49 ( 49 , u64 , i64 ) => [ u64 , u128 ] ,
311
+ i50 ( 50 , u64 , i64 ) => [ u64 , u128 ] ,
312
+ i51 ( 51 , u64 , i64 ) => [ u64 , u128 ] ,
313
+ i52 ( 52 , u64 , i64 ) => [ u64 , u128 ] ,
314
+ i53 ( 53 , u64 , i64 ) => [ u64 , u128 ] ,
315
+ i54 ( 54 , u64 , i64 ) => [ u64 , u128 ] ,
316
+ i55 ( 55 , u64 , i64 ) => [ u64 , u128 ] ,
317
+ i56 ( 56 , u64 , i64 ) => [ u64 , u128 ] ,
318
+ i57 ( 57 , u64 , i64 ) => [ u64 , u128 ] ,
319
+ i58 ( 58 , u64 , i64 ) => [ u64 , u128 ] ,
320
+ i59 ( 59 , u64 , i64 ) => [ u64 , u128 ] ,
321
+ i60 ( 60 , u64 , i64 ) => [ u64 , u128 ] ,
322
+ i61 ( 61 , u64 , i64 ) => [ u64 , u128 ] ,
323
+ i62 ( 62 , u64 , i64 ) => [ u64 , u128 ] ,
324
+ i63 ( 63 , u64 , i64 ) => [ u64 , u128 ]
313
325
) ;
314
326
315
327
new_unsigned_types ! (
0 commit comments