#[macro_export]
macro_rules! value {
(move || $($body:tt)*) => {
$crate::value($crate::helpers::value::ValueOrFn::Closure(Box::new(move || $($body)*)))
};
(|| $($body:tt)*) => {
$crate::value($crate::helpers::value::ValueOrFn::Closure(Box::new(|| $($body)*)))
};
($func:expr, $($arg:expr),+ $(,)?) => {
$crate::value($crate::helpers::value::ValueOrFn::Closure(Box::new(move || $func($($arg),+))))
};
($val:expr) => {
$crate::value($crate::helpers::value::ValueOrFn::Value($val))
};
}