11//! 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+ } ;
27
38/// Describes an `NSTDOptional` variant.
49#[ repr( C ) ]
@@ -18,3 +23,29 @@ pub enum NSTDOptional<T> {
1823 /// The initialized variant.
1924 Some ( T ) ,
2025}
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