2 个不稳定版本
| 0.2.0 | 2022 年 10 月 18 日 |
|---|---|
| 0.1.2 | 2022 年 10 月 11 日 |
| 0.1.1 |
|
| 0.1.0 |
|
#10 在 #ok
每月 429 次下载
8KB
62 行
tryvial
小型 crate,用于 Ok 包装和 try 块。此 crate 与 Result、Option 以及实现不稳定 std::ops::Try 特性的任何类型兼容。
此 crate 不需要 nightly Rust。
概述
宏 try_fn 用于对函数的返回值执行 Ok 包装。
之前
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Enter your name: ");
let mut name = String::new();
std::io::stdin().read_line(&mut name)?;
println!("Hello, {name}!");
Ok(()) // this is ugly
}
之后
#[try_fn]
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Enter your name: ");
let mut name = String::new();
std::io::stdin().read_line(&mut name)?;
println!("Hello, {name}!");
}
宏 try_block 是 nightly rust 中 "try 块" 的实现。
let result: Result<T, E> = try_block! {
let a = do_one(x)?;
let b = do_two(a)?;
b
};
宏 wrap_ok 简单地将表达式包装为给定 Try 类型的 "ok" 变体。
assert_eq!(Some(42), wrap_ok!(42));
许可证
MIT 或 Apache-2.0
依赖项
~42KB