Crate allwords[][src]

Expand description

allwords is a crate that allows you to generate words over a given alphabet.

Word generation can be useful in several scenarios:

  • Pseudo-random data generation (e.g. testing / mocking)
  • Brute forcing of keys / passwords
  • Id or Serial number generation

The basic idea for using this library is that you create an Alphabet with a set of characters and then you can use it to generate a WordsIterator. You can use the iterator to generate all the possible words over the alphabet.

For instance if you want to generate all the possible words containing "a", "b", "c" with a maximum length of 3 chars:

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"]
    .map(|s| s.to_string())

assert_eq!(words, expected_words);


A representation of an alphabet

A iterator that can generate words for a given alphabet