5 个版本

0.0.4 2020年3月18日
0.0.3 2020年3月16日
0.0.2 2020年3月12日
0.0.1 2020年3月10日
0.0.0 2020年3月6日

#1225 in 文本处理

MIT 许可证

35KB
574

Build Status Docs Current Crates.io Version

泥巴器

从预定义的字母表中生成两个字符串之间字典序均匀间隔的字符串。

这是对 mudderjs 的重写;感谢原作者及其贡献者们的原始工作!

用法

在 Cargo.toml 中添加依赖项

mudders = "0.0.4"

现在您可以通过几种不同的方式生成字典序间隔字符串

use mudders::SymbolTable;
// The mudder method takes a NonZeroUsize as the amount,
// so you cannot pass in an invalid value.
use std::num::NonZeroUsize;

// You can use the included alphabet table
let table = SymbolTable::alphabet();
// SymbolTable::mudder() returns a Vec containing `amount` Strings.
let result = table.mudder_one("a", "z").unwrap();
// These strings are always lexicographically placed between `start` and `end`.
let one_str = result.as_str();
assert!(one_str > "a");
assert!(one_str < "z");

// You can also define your own symbol tables
let table = SymbolTable::from_chars(&['a', 'b']).unwrap();
let result = table.mudder("a", "b", NonZeroUsize::new(2).unwrap()).unwrap();
assert_eq!(result.len(), 2);
assert!(result[0].as_str() > "a" && result[1].as_str() > "a");
assert!(result[0].as_str() < "b" && result[1].as_str() < "b");

// The strings *should* be evenly-spaced and as short as they can be.
let table = SymbolTable::alphabet();
let result = table.mudder("anhui", "azazel", NonZeroUsize::new(3).unwrap()).unwrap();
assert_eq!(result.len(), 3);
assert_eq!(vec!["aq", "as", "av"], result);

注意

与 Mudder.js 最明显的不同之处在于,目前 mudders 只支持 ASCII 字符(因为 127 个字符应该对每个人来说都足够了™)。我们的默认 ::alphabet() 也只包含小写字母。

无运行时依赖