1
1
//! Represents an optional (possibly uninitialized) value.
2
+ use crate :: {
3
+ NSTDBool , NSTDChar , NSTDChar16 , NSTDChar32 , NSTDChar8 , NSTDFloat32 , NSTDFloat64 , NSTDInt ,
4
+ NSTDInt16 , NSTDInt32 , NSTDInt64 , NSTDInt8 , NSTDUInt , NSTDUInt16 , NSTDUInt32 , NSTDUInt64 ,
5
+ NSTDUInt8 , NSTDUnichar ,
6
+ } ;
2
7
3
8
/// Describes an `NSTDOptional` variant.
4
9
#[ repr( C ) ]
@@ -18,3 +23,29 @@ pub enum NSTDOptional<T> {
18
23
/// The initialized variant.
19
24
Some ( T ) ,
20
25
}
26
+
27
+ /// Generates optional primitive structures.
28
+ macro_rules! gen_optional {
29
+ ( $name: ident, $T: ty) => {
30
+ #[ doc = concat!( "Represents an optional value of type `" , stringify!( $T) , "`." ) ]
31
+ pub type $name = NSTDOptional <$T>;
32
+ } ;
33
+ }
34
+ gen_optional ! ( NSTDOptionalBool , NSTDBool ) ;
35
+ gen_optional ! ( NSTDOptionalChar , NSTDChar ) ;
36
+ gen_optional ! ( NSTDOptionalChar8 , NSTDChar8 ) ;
37
+ gen_optional ! ( NSTDOptionalChar16 , NSTDChar16 ) ;
38
+ gen_optional ! ( NSTDOptionalChar32 , NSTDChar32 ) ;
39
+ gen_optional ! ( NSTDOptionalUnichar , NSTDUnichar ) ;
40
+ gen_optional ! ( NSTDOptionalFloat32 , NSTDFloat32 ) ;
41
+ gen_optional ! ( NSTDOptionalFloat64 , NSTDFloat64 ) ;
42
+ gen_optional ! ( NSTDOptionalInt , NSTDInt ) ;
43
+ gen_optional ! ( NSTDOptionalUInt , NSTDUInt ) ;
44
+ gen_optional ! ( NSTDOptionalInt8 , NSTDInt8 ) ;
45
+ gen_optional ! ( NSTDOptionalUInt8 , NSTDUInt8 ) ;
46
+ gen_optional ! ( NSTDOptionalInt16 , NSTDInt16 ) ;
47
+ gen_optional ! ( NSTDOptionalUInt16 , NSTDUInt16 ) ;
48
+ gen_optional ! ( NSTDOptionalInt32 , NSTDInt32 ) ;
49
+ gen_optional ! ( NSTDOptionalUInt32 , NSTDUInt32 ) ;
50
+ gen_optional ! ( NSTDOptionalInt64 , NSTDInt64 ) ;
51
+ gen_optional ! ( NSTDOptionalUInt64 , NSTDUInt64 ) ;
0 commit comments