5个版本
0.2.2 | 2019年11月11日 |
---|---|
0.2.1 | 2019年11月11日 |
0.2.0 | 2019年11月11日 |
0.1.1 | 2019年11月11日 |
0.1.0 | 2019年11月11日 |
#7 in #vice
18KB
324 行
T9
Rust中的预测文本
动机
我从ag_dubs那里学到了一个巧妙的技巧,可以用来为你的应用程序生成端口号。他们在各种RustBridge活动中使用了这个技巧。
这个技巧是选择一个与你应用程序相关的单词,然后查看电话键盘。
由Sakurambo使用Adobe Illustrator CS2创建,公有领域,https://commons.wikimedia.org/w/index.php?curid=2048341
查找每个字母对应的数字,这将是你端口号。
示例
以单词rust
为例。查看键盘,我们发现以下数字
字母 | 数字 |
---|---|
r | 7 |
u | 8 |
s | 7 |
t | 8 |
你的应用程序的端口号将是7878
。
艰苦工作
确定正确的键盘是一项艰苦的工作。幸运的是,t9
包就派上用场了。以下代码可以用来确定rust对应的端口号。
extern crate t9;
use std::env;
use t9::pad;
fn main() {
let args: Vec<String> = env::args().collect();
let port_name = &args[1];
let port = pad::digits_for(port_name);
println!("{}", port)
}
使用cargo run --examples port -- rust
会返回预期的7878
。在port.rs
中可以找到在示例目录中的示例。
反向查找
t9
还允许你进行反向查找。也就是说,给定端口号对应的单词是什么?
extern crate t9;
use std::env;
use std::fs::File;
use std::io::{self, BufRead, BufReader};
use t9::{pad, tree::Tree};
fn main() -> io::Result<()> {
let mut tree = Tree::empty();
let file = File::open("/usr/share/dict/american-english")?;
let reader = BufReader::new(file);
for word in reader.lines() {
tree.add(word?);
}
let args: Vec<String> = env::args().collect();
let port = &args[1];
let digits = pad::digits_for(port);
let words = tree.words_at(digits);
for word in words {
println!("{}", word)
}
Ok(())
}
使用cargo run --release --example t9 -- 7878
会返回预期的rust
。在示例目录中可以找到一个更详细的示例,允许你指定字典文件。
依赖关系
~750KB