#io-error #error #io #eq #clone

eieio

实现 Eq + Clone 时出现错误,替换 std::io::Error

1 个稳定版本

1.0.0 2020年5月17日

#2010Rust模式

Download history 4404/week @ 2024-03-14 4951/week @ 2024-03-21 4844/week @ 2024-03-28 6290/week @ 2024-04-04 5447/week @ 2024-04-11 5423/week @ 2024-04-18 4713/week @ 2024-04-25 5368/week @ 2024-05-02 5517/week @ 2024-05-09 6927/week @ 2024-05-16 4678/week @ 2024-05-23 4584/week @ 2024-05-30 4620/week @ 2024-06-06 4913/week @ 2024-06-13 4857/week @ 2024-06-20 3586/week @ 2024-06-27

每月下载量:18,932
7 个crate中使用(2个直接使用)

MIT 协议

6KB
114

eieio — 实现 Eq + Clone 时出现错误,替换 std::io::Error

eieio::Errorstd::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::Erroreieio::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);

无运行时依赖