#chaining #pipe #pipeline #tap

no-std tailsome

提供将任何内容转换为.into_ok().into_err().into_some()的泛型特质,以实现更愉悦的方法链

2个版本 (1个稳定版)

1.0.0 2023年3月16日
0.1.0 2022年1月21日

Rust模式中排名1386

MIT/Apache

5KB

tailsome

提供将任何内容转换为OptionResult的方法的泛型特质。

tap::Pipe的启发,它提供了一个pipe方法,允许用户在方法链中间调用任何裸函数。

这些特质中最有用的方法可能是IntoResult::into_ok。不要将长方法链表达式包裹在调用Ok中,而是尝试在末尾添加.into_ok()。这在返回Result并明智地使用方法链和?运算符的函数中尤其令人愉悦。

use tailsome::IntoResult;

build_pipeline().unwrap();

fn build_pipeline() -> Result<Example, Error> {
    Builder::new()
        .set_option(42)
        .try_set_option("some flag")?
        .set_option("another option")
        .build()
        .into_ok()
}

struct Example;

struct Builder;
impl Builder {
    fn new() -> Self { Self }
    fn set_option<T>(self, t: T) -> Self { self }
    fn try_set_option<T>(self, t: T) -> Result<Self, Error> { Ok(self) }
    fn build(self) -> Example { Example }
}

#[derive(Debug)]
struct Error;

无运行时依赖