secure_gate/macros.rs
1// src/macros.rs
2// Ergonomic constructor macro + type aliases only
3
4/// Create a secret from an expression or literal.
5#[macro_export]
6macro_rules! secure {
7 ($ty:ty, $expr:expr) => {
8 $crate::Fixed::<$ty>::new($expr)
9 };
10 ($ty:ty, [$($val:expr),+ $(,)?]) => {
11 $crate::Fixed::<$ty>::new([$($val),+])
12 };
13}
14
15/// Define a fixed-size secret type alias.
16#[macro_export]
17macro_rules! fixed_alias {
18 ($name:ident, $size:literal) => {
19 pub type $name = $crate::Fixed<[u8; $size]>;
20 };
21}
22
23/// Define a dynamic secret type alias.
24#[macro_export]
25macro_rules! dynamic_alias {
26 ($name:ident, $ty:ty) => {
27 pub type $name = $crate::Dynamic<$ty>;
28 };
29}