1 个稳定版本
1.0.0 | 2020年5月17日 |
---|
#2010 在 Rust模式
每月下载量:18,932
在 7 个crate中使用(2个直接使用)
6KB
114 行
eieio
— 实现 Eq + Clone
时出现错误,替换 std::io::Error
eieio::Error
是 std::io::Error
的替代品,它实现了 Eq + Clone
。此类型旨在作为其他错误类型的“来源”,在这些类型中,希望有一个实现的 Eq + Clone
。
// Constructs a standard io::Error...
let ioe = std::fs::read_dir("/dev/null").unwrap_err();
// Converts into an Eq + Clone error
let e1 = eieio::Error::from(ioe);
let e2 = e1.clone();
assert_eq!(e1, e2);
克隆
eieio::Error
使用 Arc
而不是 Box
来存储自定义错误,以允许通用克隆。
从 std::io::Error
到 eieio::Error
的转换可能需要复制整个自定义错误。
相等性
eieio::Error
使用 Arc::ptr_eq
来比较自定义错误的相等性。
如果原始 std::io::Error
带有的自定义错误实现了 Eq
,则忽略该自定义相等性
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);