#count #iterator #where

count_where

为 Iterator 添加 count_where 方法,以便轻松计数满足特定条件的项

2 个版本

0.1.1 2021年6月7日
0.1.0 2021年6月6日

#3 in #where

MIT 许可证

7KB

=count_where=

'''作者:''' Bryce Campbell

'''描述:''' 一个单独的 trait 库,添加了一个 iterator 方法,允许用户轻松地计数符合特定条件的元素。

'''许可证:''' 查看 LICENSE 文件

==版本历史==

  • 0.1.1

    发布于2021年6月7日

    允许在闭包中比较布尔值。

  • 0.1

    发布于2021年6月6日

    初始版本。

==备注==

此库仅在 macOS Big Sur 上使用 Rust 1.51.0 进行了测试,但应适用于任何平台。

===为何创建此库?===

我喜欢时不时地涉猎编程,有一天我尝试制作一个 Rust 的等效项目 此项目,以帮助我更好地掌握 Rust。

尽管我能弄懂大部分东西,但在实现一些功能时有些困难,例如确定一个数字出现次数的计数方法。

虽然我可以创建一个接受数据和要查找的数字的函数,但它似乎没有我为 Swift 变体编写的扩展那样优雅,后者适用于所有符合 Equatable 的 Items 的 Sequences。

因此,我决定研究在 Rust 中创建 Iterator 扩展,这样我就可以在 Rust 中做类似这样的事情

sequence.count { $0 == number }

在编写库的代码时,我多少取得了成功,这给了我一个很好的机会来了解如何创建 trait 扩展以及在 Rust 中创建库。

尽管这个库没有像上面的 Swift 代码那样简单,但它仍然提供了相同的便利性,这是我需要的。

===使用方法===

要使用此库,请将以下内容添加到 Cargo.toml 文件中

[dependencies]
count_where = "0.1.0"

之后,只需在需要此方法的源文件中放置以下内容即可

use count_where::CountWhere;

然后您可以使用以下代码进行计数

fn main() {
    let numbers = [5, 5, 5, 2, 1];

    let number = 5

    println!("{} appears {} times", number, numbers.iter().count_where(|n| **n == number));
}

因为 n&&T 类型,所以需要像上面那样取消引用,以便进行比较。

将来可能会有所变化,这是我希望做的,但由于我对 Rust 的经验不如 Swift,这将是需要忍受的事情。

===贡献===

如果您想为此库做出贡献,请随意创建一个分支并发送您的修改。

我非常希望提供的函数可以使用类似 filter 方法的方式使用,如下所示

fn main() {
    let numbers = [5, 5, 5, 2, 1];
    let filtered_numbers = numbers.iter().filter(|n| n == 5);

    println!("{}", filtered_numbers);
}

===支持===

由于我对 Rust 的经验与 Swift 相比有限,因此无法提供太多的支持,所以请期待自行解决问题。

然而,我可以尝试检查问题,所以请随时通过以下邮箱联系我。

[email protected]

无运行时依赖