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.
// Constructs a standard io::Error...
let ioe = read_dir.unwrap_err;
// Converts into an Eq + Clone error
let e1 = from;
let e2 = e1.clone;
assert_eq!;
Clone
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.
Equality
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:
use ErrorKind;
let e1 = new;
let e2 = new;
assert_ne!;