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 文本处理
35KB
574 行
泥巴器
从预定义的字母表中生成两个字符串之间字典序均匀间隔的字符串。
这是对 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()
也只包含小写字母。