| #![allow(dead_code)] |
| |
| use std::fmt::{self, Display}; |
| use std::io; |
| use thiserror::Error; |
| |
| macro_rules! unimplemented_display { |
| ($ty:ty) => { |
| impl Display for $ty { |
| fn fmt(&self, _formatter: &mut fmt::Formatter) -> fmt::Result { |
| unimplemented!() |
| } |
| } |
| }; |
| } |
| |
| #[derive(Error, Debug)] |
| struct BracedError { |
| msg: String, |
| pos: usize, |
| } |
| |
| #[derive(Error, Debug)] |
| struct TupleError(String, usize); |
| |
| #[derive(Error, Debug)] |
| struct UnitError; |
| |
| #[derive(Error, Debug)] |
| struct WithSource { |
| #[source] |
| cause: io::Error, |
| } |
| |
| #[derive(Error, Debug)] |
| struct WithAnyhow { |
| #[source] |
| cause: anyhow::Error, |
| } |
| |
| #[derive(Error, Debug)] |
| enum EnumError { |
| Braced { |
| #[source] |
| cause: io::Error, |
| }, |
| Tuple(#[source] io::Error), |
| Unit, |
| } |
| |
| unimplemented_display!(BracedError); |
| unimplemented_display!(TupleError); |
| unimplemented_display!(UnitError); |
| unimplemented_display!(WithSource); |
| unimplemented_display!(WithAnyhow); |
| unimplemented_display!(EnumError); |