| Crates.io | dispair |
| lib.rs | dispair |
| version | 0.1.0 |
| created_at | 2023-11-14 03:06:24.288519+00 |
| updated_at | 2023-11-14 03:06:24.288519+00 |
| description | Dispair (Disp-Err) is a zero-dependency (other than `std`) library that provides a simple wrapper struct that implements `Error` for any type that implements both `Debug` and `Display`. |
| homepage | |
| repository | https://github.com/peperworx/dispair |
| max_upload_size | |
| id | 1034334 |
| size | 5,717 |
Dispair (Disp-Err) is a zero-dependency (other than std) library that provides a simple wrapper struct that implements Error for any type that implements both Debug and Display.
use dispair::Dispair;
use std::error::Error;
#[derive(Debug)]
struct TestStruct;
impl core::fmt::Display for TestStruct {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
core::fmt::Debug::fmt(&self, f)
}
}
fn main() {
// Wrap `TestStruct` (which doesn't implement `Error`) in `Dispair` and return it.
let err = Dispair(TestStruct);
// Display just passes through to the wrapped value
assert_eq!(format!("{}", err), "TestStruct");
// Debug, however, does show `Dispair`.
assert_eq!(format!("{:?}", err), "Dispair(TestStruct)");
// We should be able to convert it into a `Box<dyn Error>`
let err_boxed: Box<dyn Error> = Box::new(err);
// And this should print nicely
assert_eq!(err_boxed.to_string(), "TestStruct");
}