1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
macro_rules! deref { ($struct_name:ident::$field_name:ident => $target_name:ty) => ( impl ::std::ops::Deref for $struct_name { type Target = $target_name; #[inline] fn deref(&self) -> &Self::Target { &self.$field_name } } impl ::std::ops::DerefMut for $struct_name { #[inline] fn deref_mut(&mut self) -> &mut Self::Target { &mut self.$field_name } } ); } macro_rules! raise( ($message:expr) => (return Err(::Error::new(::std::io::ErrorKind::Other, $message))); ); macro_rules! some( ($option:expr, $message:expr) => ( match $option { Some(value) => value, _ => raise!($message), } ); );