eieio
— Error Implementing Eq + Clone
replacing std::io::Error
eieio::Error
is a replacement of std::io::Error
which implements Eq + Clone
. This type is
intended as a "source" of other errors where a derived Eq + Clone
implemented is desired.
```rust // Constructs a standard io::Error... let ioe = std::fs::readdir("/dev/null").unwraperr();
// Converts into an Eq + Clone error let e1 = eieio::Error::from(ioe); let e2 = e1.clone(); assert_eq!(e1, e2); ```
eieio::Error
stores custom errors in an Arc
rather than a Box
to allow universal cloning.
Conversion from std::io::Error
to eieio::Error
may need to perform a copy of the entire custom error.
eieio::Error
uses Arc::ptr_eq
to compare equality of custom errors.
If the custom error carried by the original std::io::Error
itself implements Eq
, that custom equality is ignored:
```rust use std::io::ErrorKind;
let e1 = eieio::Error::new(ErrorKind::Other, Box::from("foo")); let e2 = eieio::Error::new(ErrorKind::Other, Box::from("foo")); assert_ne!(e1, e2); ```