A Rust source code parser and explorer
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples/data
src/bin
ui
.gitignore
.travis.yml
Cargo.lock
Cargo.toml
LICENSE-APACHE
LICENSE-MIT
README.md

README.md

Strata-Rust

Strata-Rust is a unique way of exploring Rust code, aiming to answer questions like:

  • Which methods take a generic argument that implements the trait Foo?
  • Do any structs contain a field called data?
  • What statements come after a "TODO" comment?
  • Are weird statements like let Single { y }: Single<&'static u32>; ever used?

How do I use it?

Right now, this project is very much in an alpha state. That's the polite way of saying "it works on my machine, and probably no other". I'm hoping to get it into a shape where it at least compiles in CI soon.

Components

Strata-Rust is a combination of many pieces of open source technology. Some selected pieces include:

Strata

Strata is the underlying search technology that powers the ability to perform queries based on the structure of the data. These queries are different from the traditional search engine inverted index and are based around manipulating ranges of the indexed text known as "extents".

The Strata crate works well on stable Rust.

Fuzzy Pickles

Fuzzy Pickles is a Rust parser written in Rust, constructed with the goal of expressing the level of detail needed to power the underlying search technology.

Fuzzy Pickles requires nightly Rust.

Web UI

Although the command line is a wonderful tool, building up the complicated queries and showing the highlighted results works best in a medium with more fidelity, such as the web. A Rocket backend powers a React and Redux frontend.

Rocket requires nightly Rust.

Contribution opportunities

A project always has need for help from interested people!

Introductory opportunities 🌟

These are things that anyone should be able to help with!

  • Suggest some queries that might be answerable given the structure of a Rust file. Ones that you have had in the Real World are preferred!
  • Try to run the indexer and server on your own files.

Intermediate opportunities 🌟🌟🌟

These might require diving into the code a bit and adding new code or changing existing code.

  • To be determined!

Please open up an issue to begin a dialog before starting if a feature seems like it will require more than just a straight-forward addition!

Advanced opportunities 🌟🌟🌟🌟🌟

These are intense feature requests that probably require a good amount of effort and definitely should be discussed in an issue before beginning.

  • To be determined!

License

strata-rust is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

Authors

This crate was created by Jake Goulding of Integer 32.