8个版本
使用旧的Rust 2015
0.1.7 | 2018年10月11日 |
---|---|
0.1.6 | 2018年10月5日 |
0.1.5 | 2018年9月3日 |
0.1.4 | 2018年4月1日 |
0.1.0 | 2015年6月20日 |
#1100 在 Rust模式
每月133次下载
24KB
383 行
Throw!
高效、静态计算的回溯封装任何错误类型。
Throw不会替代现有的错误处理系统:它只是提供了一个包装你的错误并提供额外上下文的throw::Error<E>
类型。
Throw导出两个结构体,throw::ErrorPoint
和 throw::Error
。 throw::Error
存储一个从它创建的 original_error
变量,然后是一个以 throw!()
开头的 ErrorPoint 列表,每次你用
up!()
向上传递错误时都会添加。
throw!()
和 up!()
提供的功能严格少于类似 backtrace 的其他crate,但它们具有性能优势。使用编译器提供的宏,这些函数将它们使用的行号和文件名嵌入它们构建的 ErrorPoint
中,并在每个点逐步构建堆栈跟踪。此外,你也不会在处理错误的地方上方得到无关的堆栈跟踪行!这取决于你的使用情况,可能是好也可能是坏。
Throw也只有在实际使用宏的情况下才会工作——这是一个相当大的缺点。如果你没有严格的性能要求,backtrace 可能是你想要的。
Throw的实际应用:而不是这个
IO Error: failed to lookup address information: Name or service not known
你将得到这个
Error: IO Error: failed to lookup address information: Name or service not known
at 79:17 in zaldinar::startup (src/startup.rs)
at 104:4 in zaldinar::startup (src/startup.rs)
at 28:17 in zaldinar_irclib (/home/daboross/Projects/Rust/zaldinar/zaldinar-irclib/src/lib.rs)
no_std
throw
支持不使用 std 进行构建,但它仍然会依赖于 alloc
并使用 alloc::Vec
。这可以在使用 nightly rust 并设置 default-features = false
时启用。
throw = { version = "0.1", default-features = false }
依赖项
~175KB