#try #ok #wrap #catch #throw

无 std tryvial

小型 crate,用于 Ok 包装和 try 块

2 个不稳定版本

0.2.0 2022 年 10 月 18 日
0.1.2 2022 年 10 月 11 日
0.1.1 2022 年 10 月 11 日
0.1.0 2022 年 10 月 10 日

#10#ok

Download history 399/week @ 2024-03-16 207/week @ 2024-03-23 141/week @ 2024-03-30 73/week @ 2024-04-06 577/week @ 2024-04-13 353/week @ 2024-04-20 312/week @ 2024-04-27 200/week @ 2024-05-04 491/week @ 2024-05-11 449/week @ 2024-05-18 378/week @ 2024-05-25 218/week @ 2024-06-01 163/week @ 2024-06-08 124/week @ 2024-06-15 68/week @ 2024-06-22 51/week @ 2024-06-29

每月 429 次下载

MIT/Apache

8KB
62

tryvial

小型 crate,用于 Ok 包装和 try 块。此 crate 与 ResultOption 以及实现不稳定 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