#[macro_export]
macro_rules! gstring {
($s:literal) => {
gstring!(
$s,
$crate::NoValidation,
{ $crate::DEFAULT_MIN },
{ $crate::DEFAULT_MAX },
{ $crate::DEFAULT_ASCII_ONLY }
)
};
($s:literal, $validator:ty) => {
gstring!(
$s,
$validator,
{ $crate::DEFAULT_MIN },
{ $crate::DEFAULT_MAX },
{ $crate::DEFAULT_ASCII_ONLY }
)
};
($s:literal, $validator:ty, $min:expr) => {
gstring!($s, $validator, $min, { $crate::DEFAULT_MAX }, {
$crate::DEFAULT_ASCII_ONLY
})
};
($s:literal, $validator:ty, $min:expr, $max:expr) => {
gstring!($s, $validator, $min, $max, { $crate::DEFAULT_ASCII_ONLY })
};
($s:literal, $validator:ty, $min:expr, $max:expr, $ascii_only:expr) => {{
const RET: $crate::InValidatedGString<$validator, $min, $max, $ascii_only> =
$crate::GString::<$validator, $min, $max, $ascii_only>::new($s);
RET
}};
}
#[macro_export]
macro_rules! gformat {
($fmt:expr $(, $args:expr)* ) => {
gformat!(
$fmt $(, $args)* ;
$crate::NoValidation,
{ $crate::DEFAULT_MIN },
{ $crate::DEFAULT_MAX },
{ $crate::DEFAULT_ASCII_ONLY }
)
};
($fmt:expr $(, $args:expr)* ; $validator:ty) => {
gformat!(
$fmt $(, $args)* ;
$validator,
{ $crate::DEFAULT_MIN },
{ $crate::DEFAULT_MAX },
{ $crate::DEFAULT_ASCII_ONLY }
)
};
($fmt:expr $(, $args:expr)* ; $validator:ty, $min:expr) => {
gformat!(
$fmt $(, $args)* ;
$validator,
$min,
{ $crate::DEFAULT_MAX },
{ $crate::DEFAULT_ASCII_ONLY }
)
};
($fmt:expr $(, $args:expr)* ; $validator:ty, $min:expr, $max:expr) => {
gformat!(
$fmt $(, $args)* ;
$validator,
$min,
$max,
{ $crate::DEFAULT_ASCII_ONLY }
)
};
(
$fmt:expr $(, $args:expr)* ;
$validator:ty,
$min:expr,
$max:expr,
$ascii_only:expr
) => {{
#[cfg(feature = "alloc")]
{
let s = format!($fmt $(, $args)*);
$crate::GString::<
$validator,
$min,
$max,
$ascii_only
>::try_new(&s)
}
#[cfg(not(feature = "alloc"))]
compile_error!(
"gformat! requires the `alloc` feature"
);
}};
}