2 个版本
0.1.1 | 2021年6月7日 |
---|---|
0.1.0 | 2021年6月6日 |
#3 in #where
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 相比有限,因此无法提供太多的支持,所以请期待自行解决问题。
然而,我可以尝试检查问题,所以请随时通过以下邮箱联系我。