mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-04-24 17:12:16 +02:00
add readme
This commit is contained in:
parent
403bb72a4d
commit
883ceb343c
68
README.md
68
README.md
@ -1,63 +1,5 @@
|
|||||||
fst
|
rep
|
||||||
===
|
---
|
||||||
This crate provides a fast implementation of ordered sets and maps using finite
|
`grep`, written in Rust using the
|
||||||
state machines. In particular, it makes use of finite state transducers to map
|
[`regex`](https://github.com/rust-lang-nursery/regex)
|
||||||
keys to values as the machine is executed. Using finite state machines as data
|
crate.
|
||||||
structures enables us to store keys in a compact format that is also easily
|
|
||||||
searchable. For example, this crate levages memory maps to make range queries,
|
|
||||||
regular expression queries and Levenshtein (edit) distance queries very fast.
|
|
||||||
|
|
||||||
Check out my blog post
|
|
||||||
[Index 1,600,000,000 Keys with Automata and
|
|
||||||
Rust](http://blog.burntsushi.net/transducers/)
|
|
||||||
for extensive background, examples and experiments.
|
|
||||||
|
|
||||||
[](https://travis-ci.org/BurntSushi/fst)
|
|
||||||
[](https://ci.appveyor.com/project/BurntSushi/fst)
|
|
||||||
[](https://crates.io/crates/fst)
|
|
||||||
|
|
||||||
Dual-licensed under MIT or the [UNLICENSE](http://unlicense.org).
|
|
||||||
|
|
||||||
|
|
||||||
### Documentation
|
|
||||||
|
|
||||||
[Full API documentation and examples.](http://burntsushi.net/rustdoc/fst/)
|
|
||||||
|
|
||||||
|
|
||||||
### Installation
|
|
||||||
|
|
||||||
Simply add a corresponding entry to your `Cargo.toml` dependency list:
|
|
||||||
|
|
||||||
```ignore
|
|
||||||
[dependencies]
|
|
||||||
fst = "0.1"
|
|
||||||
```
|
|
||||||
|
|
||||||
And add this to your crate root:
|
|
||||||
|
|
||||||
```ignore
|
|
||||||
extern crate fst;
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
|
||||||
|
|
||||||
This example demonstrates building a set in memory and executing a fuzzy query
|
|
||||||
against it. Check out the documentation for a lot more examples!
|
|
||||||
|
|
||||||
```rust
|
|
||||||
use fst::{IntoStreamer, Streamer, Levenshtein, Set};
|
|
||||||
|
|
||||||
// A convenient way to create sets in memory.
|
|
||||||
let keys = vec!["fa", "fo", "fob", "focus", "foo", "food", "foul"];
|
|
||||||
let set = try!(Set::from_iter(keys));
|
|
||||||
|
|
||||||
// Build our fuzzy query.
|
|
||||||
let lev = try!(Levenshtein::new("foo", 1));
|
|
||||||
|
|
||||||
// Apply our fuzzy query to the set we built.
|
|
||||||
let mut stream = set.search(lev).into_stream();
|
|
||||||
|
|
||||||
let keys = try!(stream.into_strs());
|
|
||||||
assert_eq!(keys, vec!["fo", "fob", "foo", "food"]);
|
|
||||||
```
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user