#closures #macro #block #expressions #calling #call

fn_block

定义在闭包中调用块或表达式的宏的包

3 个不稳定版本

使用旧的 Rust 2015

0.2.1 2018 年 7 月 4 日
0.2.0 2018 年 7 月 4 日
0.1.0 2018 年 5 月 29 日

#2219Rust 模式

Apache-2.0/MIT

23KB
197

Build Status AppVeyor Status Crates.io Version

fn_block

定义在闭包中调用块或表达式的宏的库。

快速介绍

这个库主要是为了允许使用 ?. 操作符组合进行“安全导航”,(看似)而无需跳出当前函数。这允许类似在其他语言(如 Swift、C# 或 Kotlin)中操作符的使用。

要使用此库,您必须将其添加到您的 Cargo.toml 文件的依赖项中

[dependencies]
fn_block = "0.2.1"

然后,将以下行添加到您的模块中

#[macro_use]
extern crate fn_block;
use fn_block::*;

您也可以仅导入所需的符号,而不是使用通配符。

以下是如何使用此包的示例

let o = Some("Foobar");
let s = fn_expr!{ o?.get(0..3)?.to_lowercase().into_some() };
assert_eq!("foo", s.unwrap());

请访问 API 文档 以获取更多详细信息。

功能概述

简而言之,此包提供了以下 API

  • fn_expr 宏允许将表达式包装成可以直接调用的 lambda 函数。
  • IntoSome 特性,为所有 Sized 类型实现,允许在值上调用 into_some 以将其移动到 Option::Some
  • IntoOk 特性,为所有 Sized 类型实现,允许在值上调用 into_ok 以将其移动到 Result::Ok

有关更多示例,请查看测试模块。

不稳定功能

要使用不稳定功能,您必须在您的 Cargo.toml 中的依赖项声明中更新

[dependencies]
fn_block = { version = "0.2.1", features = ["unproven"] }

请注意,此包的不稳定功能 确实 在稳定 Rust 上工作。

以下是不稳定的 API

  • fn_try 宏允许将表达式包装成 lambda 函数,直接调用并在之后直接恢复错误。

许可证

fn_block 包采用以下许可证

选择您希望使用的库。

无运行时依赖