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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
#![allow(missing_docs)] use alsa; use png; use std::convert::From; use std; use toml; error_chain! { foreign_links { Alsa(alsa::Error); IO(std::io::Error); Toml(toml::de::Error); Png(png::DecodingError); } } #[macro_export] macro_rules! try_w { ($expr:expr) => { try_wr!($expr, ()) }; ($expr:expr, $fmt:expr, $($arg:tt)+) => { try_wr!($expr, (), $fmt, $(arg)+) }; ($expr:expr, $fmt:expr) => { try_wr!($expr, (), $fmt) } } #[macro_export] macro_rules! try_wr { ($expr:expr, $ret:expr) => (match $expr { ::std::result::Result::Ok(val) => val, ::std::result::Result::Err(err) => { warn!("{:?}", err); return $ret; }, }); ($expr:expr, $ret:expr, $fmt:expr) => (match $expr { ::std::result::Result::Ok(val) => val, ::std::result::Result::Err(err) => { warn!("Original error: {:?}", err); warn!($fmt); return $ret; }, }); ($expr:expr, $ret:expr, $fmt:expr, $($arg:tt)+) => (match $expr { ::std::result::Result::Ok(val) => val, ::std::result::Result::Err(err) => { warn!("Original error: {:?}", err); warn!(format!($fmt, $(arg)+)); return $ret; }, }) } #[macro_export] macro_rules! try_r { ($expr:expr, $ret:expr) => (match $expr { ::std::result::Result::Ok(val) => val, ::std::result::Result::Err(_) => { return $ret; }, }); } #[macro_export] macro_rules! try_e { ($expr:expr) => { try_er!($expr, ()) }; ($expr:expr, $fmt:expr, $($arg:tt)+) => { try_er!($expr, (), $fmt, $(arg)+) }; ($expr:expr, $fmt:expr) => { try_er!($expr, (), $fmt) } } #[macro_export] macro_rules! try_er { ($expr:expr, $ret:expr) => (match $expr { ::std::result::Result::Ok(val) => val, ::std::result::Result::Err(err) => { error!("{:?}", err); ::std::process::exit(1); }, }); ($expr:expr, $ret:expr, $fmt:expr) => (match $expr { ::std::result::Result::Ok(val) => val, ::std::result::Result::Err(err) => { error!("Original error: {:?}", err); error!($fmt); std::process::exit(1); }, }); ($expr:expr, $ret:expr, $fmt:expr, $($arg:tt)+) => (match $expr { ::std::result::Result::Ok(val) => val, ::std::result::Result::Err(err) => { error!("Original error: {:?}", err); error!(format!($fmt, $(arg)+)); std::process::exit(1); }, }) }