/
germanubis
/
tera
Обзор
Документация
Войти
/
germanubis
/
tera
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/macros.rs
35 строк
1 KB
Alexander Zonov
Hide uncompileable code examples from the "cargo test" output (#724) (#725)
23 май 2022, 20:39
Не верифицирован
23 май 2022, 20:39
48bcb01
Код
Авторство
О чём код?
/// Helper macro to get real values out of Value while retaining /// proper errors in filters /// /// Takes 4 args: /// /// - the filter name, /// - the variable name: use "value" if you are using it on the variable the filter is ran on /// - the expected type /// - the actual variable /// /// ```no_compile /// let arr = try_get_value!("first", "value", Vec<Value>, value); /// let val = try_get_value!("pluralize", "suffix", String, val.clone()); /// ``` #[macro_export] macro_rules! try_get_value { ($filter_name:expr, $var_name:expr, $ty:ty, $val:expr) => {{ match $crate::from_value::<$ty>($val.clone()) { Ok(s) => s, Err(_) => { if $var_name == "value" { return Err($crate::Error::msg(format!( "Filter `{}` was called on an incorrect value: got `{}` but expected a {}", $filter_name, $val, stringify!($ty) ))); } else { return Err($crate::Error::msg(format!( "Filter `{}` received an incorrect type for arg `{}`: got `{}` but expected a {}", $filter_name, $var_name, $val, stringify!($ty) ))); } } } }}; }