3 个版本

0.1.2 2021年11月18日
0.1.1 2021年2月8日
0.1.0 2021年2月8日

#851 in 编码


用于 biogarden

MIT 许可证

22KB
257

allwords 🦀

build badge codecov crates.io badge Documentation

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 种不同的方法获取迭代器

有关更多详情和示例,请参阅crate 文档

贡献

每个人都很欢迎为这个项目做出贡献。您只需通过在 GitHub 上创建一个问题,提交错误或建议改进即可。

许可证

MIT 许可证下授权。© Luciano Mammino。

无运行时依赖