#[macro_export]
macro_rules! require_args {
($args:expr, $count:expr, $func:expr) => {
if $args.len() != $count {
return Err($crate::error::ShapeError::RuntimeError {
message: format!(
"{}() requires exactly {} argument{}",
$func,
$count,
if $count == 1 { "" } else { "s" }
),
location: None,
});
}
};
}
#[macro_export]
macro_rules! require_min_args {
($args:expr, $min:expr, $func:expr) => {
if $args.len() < $min {
return Err($crate::error::ShapeError::RuntimeError {
message: format!(
"{}() requires at least {} argument{}",
$func,
$min,
if $min == 1 { "" } else { "s" }
),
location: None,
});
}
};
}
#[macro_export]
macro_rules! require_args_range {
($args:expr, $min:expr, $max:expr, $func:expr) => {
if $args.len() < $min || $args.len() > $max {
return Err($crate::error::ShapeError::RuntimeError {
message: format!(
"{}() requires between {} and {} arguments, got {}",
$func,
$min,
$max,
$args.len()
),
location: None,
});
}
};
}