1#![cfg_attr(feature = "incomplete", allow(incomplete_features))]
24#![cfg_attr(feature = "incomplete", feature(const_generics))]
25#![cfg_attr(feature = "incomplete", feature(const_evaluatable_checked))]
26#![cfg_attr(feature = "incomplete", feature(const_panic))]
27
28#[cfg(feature = "bool")]
29pub mod bool;
31
32#[cfg(feature = "bool")]
33#[rustversion::since(1.51)]
34pub type ConstBool<const VALUE: bool> = crate::bool::Const<VALUE>;
36
37include!("stable.rs");
38#[rustversion::since(1.51)]
39include!("min.rs");
40#[rustversion::all(since(1.51), nightly)]
41#[cfg(feature = "incomplete")]
42include!("incomplete.rs");
43
44macro_rules! expand_impl {
45 ($c:tt, $t:tt, $($doc1:expr),*;$($doc2:expr),*;$($doc3:expr),*) => {
46 $(#[doc=$doc1])*
47 pub mod $t {
48 impl_stable!($t);
49 #[rustversion::since(1.51)]
50 impl_min!($t, $($doc3),*);
51 #[rustversion::all(since(1.51), nightly)]
52 #[cfg(feature = "incomplete")]
53 impl_incomplete!($t);
54 }
55 #[rustversion::since(1.51)]
56 impl_min_out!($c, $t, $($doc2),*);
57 };
58}
59#[cfg(feature = "usize")]
60expand_impl!(ConstUsize, usize, "module for [prim@usize]"; "See [struct@usize::Const]";
61 "Constant [prim@usize] value",
62 "",
63 "# Example",
64 "```",
65 "# use partial_const::*;",
66 "let const_value = partial_const::usize::Const::<42>::new();",
67 "assert_eq!(core::mem::size_of::<partial_const::usize::Const<42>>(), 0);",
68 "assert_eq!(const_value.value(), 42);",
69 "```");
70#[cfg(feature = "isize")]
71expand_impl!(ConstIsize, isize, "module for [prim@isize]"; "See [struct@isize::Const]";
72 "Constant [prim@isize] value",
73 "",
74 "# Example",
75 "```",
76 "# use partial_const::*;",
77 "let const_value = partial_const::isize::Const::<42>::new();",
78 "assert_eq!(core::mem::size_of::<partial_const::isize::Const<42>>(), 0);",
79 "assert_eq!(const_value.value(), 42);",
80 "```");
81#[cfg(feature = "i8")]
82expand_impl!(ConstI8, i8, "module for [prim@i8]"; "See [struct@i8::Const]";
83 "Constant [prim@i8] value",
84 "",
85 "# Example",
86 "```",
87 "# use partial_const::*;",
88 "let const_value = partial_const::i8::Const::<42>::new();",
89 "assert_eq!(core::mem::size_of::<partial_const::i8::Const<42>>(), 0);",
90 "assert_eq!(const_value.value(), 42);",
91 "```");
92#[cfg(feature = "i16")]
93expand_impl!(ConstI16, i16, "module for [prim@i16]"; "See [struct@i16::Const]";
94 "Constant [prim@i16] value",
95 "",
96 "# Example",
97 "```",
98 "# use partial_const::*;",
99 "let const_value = partial_const::i16::Const::<42>::new();",
100 "assert_eq!(core::mem::size_of::<partial_const::i16::Const<42>>(), 0);",
101 "assert_eq!(const_value.value(), 42);",
102 "```");
103#[cfg(feature = "i32")]
104expand_impl!(ConstI32, i32, "module for [prim@i32]"; "See [struct@i32::Const]";
105 "Constant [prim@i32] value",
106 "",
107 "# Example",
108 "```",
109 "# use partial_const::*;",
110 "let const_value = partial_const::i32::Const::<42>::new();",
111 "assert_eq!(core::mem::size_of::<partial_const::i32::Const<42>>(), 0);",
112 "assert_eq!(const_value.value(), 42);",
113 "```");
114#[cfg(feature = "i64")]
115expand_impl!(ConstI64, i64, "module for [prim@i64]"; "See [struct@i64::Const]";
116 "Constant [prim@i64] value",
117 "",
118 "# Example",
119 "```",
120 "# use partial_const::*;",
121 "let const_value = partial_const::i64::Const::<42>::new();",
122 "assert_eq!(core::mem::size_of::<partial_const::i64::Const<42>>(), 0);",
123 "assert_eq!(const_value.value(), 42);",
124 "```");
125#[cfg(feature = "i128")]
126expand_impl!(ConstI128, i128, "module for [prim@i128]"; "See [struct@i128::Const]";
127 "Constant [prim@i128] value",
128 "",
129 "# Example",
130 "```",
131 "# use partial_const::*;",
132 "let const_value = partial_const::i128::Const::<42>::new();",
133 "assert_eq!(core::mem::size_of::<partial_const::i128::Const<42>>(), 0);",
134 "assert_eq!(const_value.value(), 42);",
135 "```");
136#[cfg(feature = "u8")]
137expand_impl!(ConstU8, u8, "module for [prim@u8]"; "See [struct@u8::Const]";
138 "Constant [prim@u8] value",
139 "",
140 "# Example",
141 "```",
142 "# use partial_const::*;",
143 "let const_value = partial_const::u8::Const::<42>::new();",
144 "assert_eq!(core::mem::size_of::<partial_const::u8::Const<42>>(), 0);",
145 "assert_eq!(const_value.value(), 42);",
146 "```");
147#[cfg(feature = "u16")]
148expand_impl!(ConstU16, u16, "module for [prim@u16]"; "See [struct@u16::Const]";
149 "Constant [prim@u16] value",
150 "",
151 "# Example",
152 "```",
153 "# use partial_const::*;",
154 "let const_value = partial_const::u16::Const::<42>::new();",
155 "assert_eq!(core::mem::size_of::<partial_const::u16::Const<42>>(), 0);",
156 "assert_eq!(const_value.value(), 42);",
157 "```");
158#[cfg(feature = "u32")]
159expand_impl!(ConstU32, u32, "module for [prim@u32]"; "See [struct@u32::Const]";
160 "Constant [prim@u32] value",
161 "",
162 "# Example",
163 "```",
164 "# use partial_const::*;",
165 "let const_value = partial_const::u32::Const::<42>::new();",
166 "assert_eq!(core::mem::size_of::<partial_const::u32::Const<42>>(), 0);",
167 "assert_eq!(const_value.value(), 42);",
168 "```");
169#[cfg(feature = "u64")]
170expand_impl!(ConstU64, u64, "module for [prim@u64]"; "See [struct@u64::Const]";
171 "Constant [prim@u64] value",
172 "",
173 "# Example",
174 "```",
175 "# use partial_const::*;",
176 "let const_value = partial_const::u64::Const::<42>::new();",
177 "assert_eq!(core::mem::size_of::<partial_const::u64::Const<42>>(), 0);",
178 "assert_eq!(const_value.value(), 42);",
179 "```");
180#[cfg(feature = "u128")]
181expand_impl!(ConstU128, u128, "module for [prim@u128]"; "See [struct@u128::Const]";
182 "Constant [prim@u128] value",
183 "",
184 "# Example",
185 "```",
186 "# use partial_const::*;",
187 "let const_value = partial_const::u128::Const::<42>::new();",
188 "assert_eq!(core::mem::size_of::<partial_const::u128::Const<42>>(), 0);",
189 "assert_eq!(const_value.value(), 42);",
190 "```");
191#[cfg(feature = "char")]
192expand_impl!(ConstChar, char, "module for [prim@char]"; "See [struct@char::Const]";
193 "Constant [prim@char] value",
194 "",
195 "# Example",
196 "```",
197 "# use partial_const::*;",
198 "let const_value = partial_const::char::Const::<'A'>::new();",
199 "assert_eq!(core::mem::size_of::<partial_const::char::Const<'A'>>(), 0);",
200 "assert_eq!(const_value.value(), 'A');",
201 "```");