57 lines
1.0 KiB
Rust
57 lines
1.0 KiB
Rust
#![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);
|