# lsif-rust Language Server Index Format (LSIF) is a standard format for language servers or other programming tools to dump their knowledge about a code workspace ([article](https://code.visualstudio.com/blogs/2019/02/19/lsif)). `lsif-rust` is an attempt to implement such a tool for Rust since none exists for the language as listed on [lsif.dev](https://lsif.dev). ## Installation ```sh cargo install lsif-rust ``` ## Usage Run the command in the same directory as `Cargo.toml`. Requires nightly Rust (for `-Z save-analysis`). ```sh lsif-rust 0.0.1 LSIF Indexer for Rust USAGE: lsif-rust [OPTIONS] FLAGS: -h, --help Prints help information -V, --version Prints version information OPTIONS: -o, --output The output file. Outputs to stdout if unspecified. --output-format Specifies the output format. [default: line] [possible values: line, json] ``` ## Progress `lsif-rust` is under heavy development and very much still a WIP. Checklisted below are the features that have been implemented: - [x] [`textdocument/definition`](https://microsoft.github.io/language-server-protocol/specifications/lsif/0.4.0/specification/#definition) - [x] [`textdocument/declaration`](https://microsoft.github.io/language-server-protocol/specifications/lsif/0.4.0/specification/#declaration) - [x] [`textdocument/hover`](https://microsoft.github.io/language-server-protocol/specifications/lsif/0.4.0/specification/#hover) - [x] [`textdocument/references`](https://microsoft.github.io/language-server-protocol/specifications/lsif/0.4.0/specification/#references) - [ ] [`textdocument/implementation`](https://microsoft.github.io/language-server-protocol/specifications/lsif/0.4.0/specification/#implementation) - [ ] [`textdocument/typeDefinition`](https://microsoft.github.io/language-server-protocol/specifications/lsif/0.4.0/specification/#typeDefinition) - [ ] [`textdocument/foldingRange`](https://microsoft.github.io/language-server-protocol/specifications/lsif/0.4.0/specification/#foldingRange) - [ ] [`textdocument/documentLink`](https://microsoft.github.io/language-server-protocol/specifications/lsif/0.4.0/specification/#documentLink) - [ ] [`textdocument/documentSymbol`](https://microsoft.github.io/language-server-protocol/specifications/lsif/0.4.0/specification/#documentSymbol) - [ ] [`textdocument/diagnostic`](https://microsoft.github.io/language-server-protocol/specifications/lsif/0.4.0/specification/#diagnostic) Other features (non-exhaustive): - [ ] Supports Cargo workspaces ## Related - [lsif-types](https://github.com/devinalvaro/lsif-types)