2 个稳定版本

1.0.1 2020 年 5 月 14 日
1.0.0 2019 年 12 月 20 日

Rust 模式 中排名 1989

每月下载 22
用于 rubot

MIT 许可证 MIT

5KB

Tapir

一个简单的 Rust 库,为所有类型添加点击功能。

tap 操作会完全拥有一个变量的所有权,使用给定变量的可变引用调用给定的函数,然后返回该变量的完全所有权。这允许在不声明变量为可变的情况下轻松进行修改。

此库部分受到 tap-rs 的启发。

示例

fn get_unsorted_values() -> Vec<u32> {
    vec![42, 7, 1337, 69]
}

fn use_sorted_values(values: &[u32]) {
    assert_eq!(&[7, 42, 69, 1337], values);
}

// without tap one often needs mutable variables
let mut old = get_unsorted_values();
old.sort();
use_sorted_values(&old);

// using tap, this can be simplified
use tapir::Tap;

let tapped = get_unsorted_values().tap(|v| v.sort());
use_sorted_values(&tapped);

lib.rs:

一个公开 Tap 特性的 crate,这使得方法链式调用更加容易。

查看 Tap 获取更详细的文档。

示例

use tapir::Tap;

fn smallest_factor(x: u32) -> u32 {
    for i in 2..x {
        if x % i == 0 {
            return i;
        }
    }

    x
}

let smallest_factors: Vec<u32> = (2..25).map(smallest_factor).collect();

let unique_primes = smallest_factors.tap(|v| v.sort()).tap(Vec::dedup);
assert_eq!(unique_primes, [2, 3, 5, 7, 11, 13, 17, 19, 23]);

无运行时依赖