A minimal library & CLI tool to provide similar name suggestions like "Did you mean?" This library provides suggestion traits for all collection types in the standard library. A WebAssembly package is also supported.
This library is intended to suggest a candidate from a list of unknown suggestions until runtime, in addition to the suggestion feature already available in clap
.
This crate was previously called
suggestion
but renamed, and it'll be yanked.
This example can be executed by the cargo run --example simple
command.
```rust use suggest::Suggest;
fn main() { let input = "instakk";
let list_commands = vec!["update", "install"];
if list_commands.contains(&input) {
return;
}
if let Some(sugg) = list_commands.suggest(input) {
println!("No command named `{}` found.", input);
println!("Did you mean `{}`?", sugg);
}
} ```
shell
$ cargo run
No command named `instakk` found.
Did you mean `install`?
```rust use suggest::Suggest;
fn main() { let input = "paoc";
let list_commands = vec!["poac", "poacpp"];
if list_commands.contains(&input) {
return;
}
if let Some(sugg) = list_commands.suggest_with_dist(input, Some(2)) {
println!("No command named `{}` found.", input);
println!("Did you mean `{}`?", sugg);
}
} ```
shell
$ cargo run
No command named `paoc` found.
Did you mean `poac`?
Please let me know if anything is left out through issues or pull requests.
LinkedList
VecDeque
Vec
HashMap
BTreeMap
To suggest keys, use suggest::SuggestKey
trait.
BTreeSet
HashSet
BinaryHeap
[T; N]
: primitive array[T]
: slicesbash
cargo install suggest
This application also provides a wasm package.
You can install it using wapm
by the following command:
bash
$ wapm install ken-matsui/suggest
```bash $ suggest --help suggest 0.3.1 A minimal library & CLI tool to provide similar name suggestions like "Did you mean?"
USAGE: suggest [OPTIONS] [VALUES]...
ARGS:
Input to check if similar name exists
OPTIONS:
-d, --distance
bash
$ wapm run suggest --help
...
``bash
$ suggest instakk update install
The
instakkinput is similar to
install`.
$ suggest hoge update install
No similar name for the hoge
input was found.
$ suggest install update install
The same value with the install
input exists.
$ suggest paoc poac poacpp
No similar name for the paoc
input was found.
$ suggest paoc poac poacpp --distance 2
The paoc
input is similar to poac
.
```
``bash
$ wapm run suggest instakk update install
The
instakkinput is similar to
install`.
$ wapm run suggest hoge update install
No similar name for the hoge
input was found.
$ wapm run suggest install update install
The same value with the install
input exists.
$ wapm run suggest paoc poac poacpp
No similar name for the paoc
input was found.
$ wapm run suggest paoc poac poacpp --distance 2
The paoc
input is similar to poac
.
```
Contributions, including issues and pull requests, are very welcome.
bash
$ cargo build
Or you can directly execute the binary:
bash
$ cargo run
bash
$ rustup target add wasm32-wasi
$ cargo build --target wasm32-wasi
$ wasmer run target/wasm32-wasi/debug/suggest.wasm encode hello
This command can also test C API.
bash
$ cargo build
$ cargo test
bash
$ git tag v0.1.0
$ git push origin v0.1.0
bash
$ cargo publish
bash
$ cargo build --release --target wasm32-wasi
$ wapm publish