1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
# suggest [](https://crates.io/crates/suggest) [](https://crates.io/crates/suggest)
A minimal library to provide similar name suggestions like "Did you mean?"
This library provides suggestion traits for all collection types in the standard library.
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`](https://github.com/clap-rs/clap#default-features).
## Installation
Add the following to your `Cargo.toml`:
```toml
[dependencies]
suggest = "0.5"
```
## Examples
### Simple case
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`?
```
### Specifying distance
```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_by(input, 2) {
println!("No command named `{}` found.", input);
println!("Did you mean `{}`?", sugg);
}
}
```
```shell
$ cargo run
No command named `paoc` found.
Did you mean `poac`?
```
## Supported types
Please let me know if anything is left out through issues or pull requests.
### Sequences
* `LinkedList`
* `VecDeque`
* `Vec`
### Maps
* `HashMap`
* `BTreeMap`
To suggest keys, use `suggest::SuggestKey` trait.
### Sets
* `BTreeSet`
* `HashSet`
### Misc
* `BinaryHeap`
* `[T; N]`: primitive array
* `[T]`: slices
## Contribution
Contributions, including issues and pull requests, are very welcome.
### Build
```bash
$ cargo build
```
### Test
```bash
$ cargo build
$ cargo test
```
### Publish
#### [GitHub Releases](https://github.com/ken-matsui/suggest/tags)
```bash
$ git tag v0.1.0
$ git push origin v0.1.0
```
#### [crates.io](https://crates.io/)
```bash
$ cargo publish
```
|