diff --git a/err-derive-test/Cargo.toml b/err-derive-test/Cargo.toml new file mode 100644 index 0000000..c3863ce --- /dev/null +++ b/err-derive-test/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "err-derive-test" +version = "0.1.0" +authors = ["Hatter Jiang "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +err-derive = "0.2.2" diff --git a/err-derive-test/src/main.rs b/err-derive-test/src/main.rs new file mode 100644 index 0000000..2aafe7d --- /dev/null +++ b/err-derive-test/src/main.rs @@ -0,0 +1,37 @@ +use err_derive::Error; + +#[derive(Debug, Error)] +pub enum TestError { + #[error(display = "invalid attribute (expected: {:?}, got: {:?})", expected, found)] + InvalidAttribute { + expected: String, + found: String, + }, + #[error(display = "missing attribute: {:?}", _0)] + MissingAttribute(String), +} + + +fn main() { + println!("-----Error 0-----"); + if let Err(e) = test_err_0() { + println!("{:?}", e); + println!("{}", e); + } + println!("-----Error 1-----"); + if let Err(e) = test_err_1() { + println!("{:?}", e); + println!("{}", e); + } +} + +fn test_err_0() -> Result<(), TestError> { + Err(TestError::MissingAttribute("test".into())) +} + +fn test_err_1() -> Result<(), TestError> { + Err(TestError::InvalidAttribute { + expected: "aaa".into(), + found: "bbbb".into(), + }) +} \ No newline at end of file