Fuse-rust
## What is Fuse?
Fuse is a super lightweight library which provides a simple way to do fuzzy searching.
Fuse-RS is a port of https://github.com/krisk/fuse-swift written purely in rust.
## Usage
An example of a real use case, a search bar made using [iced](https://github.com/iced-rs/iced) is also available.
Try it using
```shell
cargo run --package search_bar
```
> Check all available examples and their source code [here.](/examples/)
### Async
Use the feature flag "async" to also be able to use async functions.
```toml
fuse-rust = { version = ..., features = ["async"]}
```
#### Initializing
The first step is to create a fuse object, with the necessary parameters. Fuse::default, returns the following parameters.
```rust
Fuse::default() = Fuse{
location: 0, // Approx where to start looking for the pattern
distance: 100, // Maximum distance the score should scale to
threshold: 0.6, // A threshold for guess work
max_pattern_length: 32, // max valid pattern length
is_case_sensitive: false,
tokenize: false, // the input search text should be tokenized
}
```
For how to implement individual searching operations, check the [examples.](/examples/)
## Options
As given above, Fuse takes the following options
- `location`: Approximately where in the text is the pattern expected to be found. Defaults to `0`
- `distance`: Determines how close the match must be to the fuzzy `location` (specified above). An exact letter match which is `distance` characters away from the fuzzy location would score as a complete mismatch. A distance of `0` requires the match be at the exact `location` specified, a `distance` of `1000` would require a perfect match to be within `800` characters of the fuzzy location to be found using a 0.8 threshold. Defaults to `100`
- `threshold`: At what point does the match algorithm give up. A threshold of `0.0` requires a perfect match (of both letters and location), a threshold of `1.0` would match anything. Defaults to `0.6`
- `maxPatternLength`: The maximum valid pattern length. The longer the pattern, the more intensive the search operation will be. If the pattern exceeds the `maxPatternLength`, the `search` operation will return `nil`. Why is this important? [Read this](https://en.wikipedia.org/wiki/Word_(computer_architecture)#Word_size_choice). Defaults to `32`
- `isCaseSensitive`: Indicates whether comparisons should be case sensitive. Defaults to `false`