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
#[derive(Debug, Fail)] pub enum NetworkError { #[fail(display = "Network error: {}", error)] GenericError { error: String }, } #[cfg(test)] mod tests { use super::*; use failure::Error; pub fn fail() -> Result<(), Error> { Err(NetworkError::GenericError { error: "boink".to_string(), }.into()) } pub fn test_bail() -> Result<(), Error> { bail!("test {}", "fish") } #[test] fn can_fail_with_generic_error() { match fail() { Ok(_) => assert!(false), Err(err) => assert_eq!(err.to_string(), "Network error: boink"), } } #[test] fn can_bail() { match test_bail() { Ok(_) => assert!(false), Err(err) => assert_eq!(err.to_string(), "test fish"), } } }