1 #![deny(clippy::all, clippy::pedantic)] 2 #![allow(dead_code)] 3 4 use std::fmt::{self, Display}; 5 use std::io; 6 use thiserror::Error; 7 8 macro_rules! unimplemented_display { 9 ($ty:ty) => { 10 impl Display for $ty { 11 fn fmt(&self, _formatter: &mut fmt::Formatter) -> fmt::Result { 12 unimplemented!() 13 } 14 } 15 }; 16 } 17 18 #[derive(Error, Debug)] 19 struct BracedError { 20 msg: String, 21 pos: usize, 22 } 23 24 #[derive(Error, Debug)] 25 struct TupleError(String, usize); 26 27 #[derive(Error, Debug)] 28 struct UnitError; 29 30 #[derive(Error, Debug)] 31 struct WithSource { 32 #[source] 33 cause: io::Error, 34 } 35 36 #[derive(Error, Debug)] 37 struct WithAnyhow { 38 #[source] 39 cause: anyhow::Error, 40 } 41 42 #[derive(Error, Debug)] 43 enum EnumError { 44 Braced { 45 #[source] 46 cause: io::Error, 47 }, 48 Tuple(#[source] io::Error), 49 Unit, 50 } 51 52 unimplemented_display!(BracedError); 53 unimplemented_display!(TupleError); 54 unimplemented_display!(UnitError); 55 unimplemented_display!(WithSource); 56 unimplemented_display!(WithAnyhow); 57 unimplemented_display!(EnumError); 58