3 个版本
0.1.2 | 2021年11月18日 |
---|---|
0.1.1 | 2021年2月8日 |
0.1.0 | 2021年2月8日 |
#851 in 编码
用于 biogarden
22KB
257 行
allwords 🦀
allwords
是一个Rust包,允许您在给定的字母表上生成单词。
单词生成在多种场景下非常有用
- 伪随机数据生成(例如测试/模拟)
- 密钥/密码的暴力破解
- 生成ID或序列号
安装
要安装此库,请将以下行添加到您的 Cargo.toml
[dependencies]
allwords = "0"
或者,如果您有 cargo add
,您可以运行以下命令
cargo add allwords@0
示例用法
使用此库的基本思路是创建一个包含字符集的 Alphabet
,然后您可以使用它生成一个 WordsIterator
。您可以使用迭代器生成字母表上所有可能的单词。
例如,如果您想生成包含 "a"
、"b"
、"c"
的所有可能单词,且最大长度为3个字符
use allwords::{Alphabet};
let a = Alphabet::from_chars_in_str("abc").unwrap();
let words: Vec<String> = a.all_words(Some(3)).collect();
let expected_words: Vec<String> = [
"a", "b", "c",
"aa", "ab", "ac", "ba", "bb", "bc", "ca", "cb", "cc",
"aaa", "aab", "aac", "aba", "abb", "abc", "aca", "acb", "acc",
"baa", "bab", "bac", "bba", "bbb", "bbc", "bca", "bcb", "bcc",
"caa", "cab", "cac", "cba", "cbb", "cbc", "cca", "ccb", "ccc"]
.iter()
.map(|s| s.to_string())
.collect();
assert_eq!(words, expected_words);
WordsIterator
创建字母表 a
后,有 4 种不同的方法获取迭代器
a.all_words(max_len)
- 创建一个迭代器,该迭代器将为给定的字母表生成所有单词。您可以可选地指定最大长度,之后迭代器将终止。a.all_words_unbound()
- 为给定的字母表创建一个无界(无限)迭代器的快捷方式。a.all_words_starting_from(start_word, max_len)
- 创建一个迭代器,从给定的单词开始生成给定字母表的所有单词。a.all_words_with_len(start_len, max_len)
- 创建一个迭代器,从具有给定最小长度的第一个单词开始生成给定字母表的所有单词。
有关更多详情和示例,请参阅crate 文档。
贡献
每个人都很欢迎为这个项目做出贡献。您只需通过在 GitHub 上创建一个问题,提交错误或建议改进即可。
许可证
在MIT 许可证下授权。© Luciano Mammino。