#[macro_export]
macro_rules! traverse(
( $value:expr $(,)? ) => ( ::std::option::Option::<&$crate::functions::Expression>::Some(&$value) );
( $value:expr, $key:expr $(,)? ) => ( $value.into_get($key) );
( $value:expr, $key:expr, $( $next_key:expr ),+ $(,)? ) => (
match $crate::traverse!( $value, $key ) {
::std::option::Option::Some(value) => $crate::traverse!( value $( , $next_key )+ ),
::std::option::Option::None => ::std::option::Option::None,
}
);
);
#[macro_export]
macro_rules! traverse_mut(
( $value:expr $(,)? ) => ( ::std::option::Option::<&mut $crate::functions::Expression>::Some($value) );
( $value:expr, $key:expr $(,)? ) => ( $value.into_get_mut($key) );
( $value:expr, $key:expr, $( $next_key:expr ),+ $(,)? ) => (
match $crate::traverse_mut!( $value, $key ) {
::std::option::Option::Some(value) => $crate::traverse_mut!( value $( , $next_key )+ ),
::std::option::Option::None => ::std::option::Option::None,
}
);
);
#[allow(unused_imports)]
pub use {traverse, traverse_mut};