Expand description
ide crate provides “ide-centric” APIs for the rust-analyzer. That is, it generally operates with files and text ranges, and returns results as Strings, suitable for displaying to the human.
What powers this API are the RootDatabase
struct, which defines a salsa
database, and the hir
crate, where majority of the analysis happens.
However, IDE specific bits of the analysis (most notably completion) happen
in this crate.
Structs§
- Analysis is a snapshot of a world state at a moment in time. It is the main entry point for asking semantic information about the world. When the world state is advanced using
AnalysisHost::apply_change
method, all existingAnalysis
are canceled (most method returnErr(Canceled)
). AnalysisHost
stores the current state of the world.- Unique identifier of the assist, should not be shown to the user directly.
CompletionItem
describes a single completion entity which expands to 1 or more entries in the editor pop-up.CrateGraph
is a bit of information which turns a set of text files into a number of Rust crates.- Holds documentation
- Encapsulate a bunch of raw
.set
calls on the database. - Handle to a file in [
Vfs
] - Contains the results when hovering over an item
InsertDelete
– a single “atomic” change to text- A type to specify UI label, like an entry in the list of assists. Enforces proper casing:
(line, column)
information in the native, UTF-8 encoding.- Maps flat
TextSize
offsets to/from(line, column)
representation. NavigationTarget
represents an element in the editor’s UI which you can click on to navigate to a particular piece of code.- We’re indexing many crates.
- Info associated with a text range.
- Generally,
search_scope
returns files that might contain references for the element. Forpub(crate)
things it’s a crate, forpub
things it’s a crate and dependant crates. In some cases, the location of the references is known to within aTextRange
, e.g. for things like local variables. - Primary API to get semantic information, like types, from syntax trees.
- Contains information about an item signature as seen from a use site.
- Hold the
AssistId
data of a certain assist to resolve. The original id object cannot be used due to a'static
lifetime and the requirement to construct this struct dynamically during the resolve handling. - A user supplied snippet.
- Files are grouped into source roots. A source root is a directory on the file systems which is watched for changes. Typically it corresponds to a Rust crate. Source roots might be nested: in this case, a file belongs to the nearest enclosing source root. Paths to files are always relative to a source root, and the analyzer does not know the root path of the source root at all. So, a file from one source root can’t refer to a file in another source root by path.
- A static representation of fully analyzed source code.
- A range in text, represented as a pair of
TextSize
. - A measure of text length. Also, equivalently, an index into text.
Enums§
- A way to control how many assist to resolve during the assist resolution. When an assist is resolved, its edits are calculated that might be costly to always do by default.
- A panic payload indicating that execution of a salsa query was cancelled.
- The type of the completion item.
- A snippet scope describing where a snippet may apply to. These may differ slightly in meaning depending on the snippet trigger.