secure_gate/macros/dynamic_generic_alias.rs
1/// Creates a generic dynamic-sized heap-allocated secure secret type.
2///
3/// This macro generates a type alias to `Dynamic<T>` with a custom doc string.
4/// Useful for libraries providing generic dynamic-sized secret wrappers.
5///
6/// # Examples
7///
8/// With custom doc:
9/// ```
10/// use secure_gate::dynamic_generic_alias;
11/// dynamic_generic_alias!(pub SecureVec, "Secure dynamic byte vector");
12/// ```
13///
14/// With default doc:
15/// ```
16/// use secure_gate::dynamic_generic_alias;
17/// dynamic_generic_alias!(pub(crate) Wrapper);
18/// ```
19#[cfg(feature = "alloc")]
20#[macro_export]
21macro_rules! dynamic_generic_alias {
22 ($vis:vis $name:ident, $doc:literal) => {
23 #[doc = $doc]
24 $vis type $name<T> = $crate::Dynamic<T>;
25 };
26 ($vis:vis $name:ident) => {
27 #[doc = "Generic secure heap wrapper"]
28 $vis type $name<T> = $crate::Dynamic<T>;
29 };
30}