[][src]Crate ra_ap_ide

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

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 existing Analysis are canceled (most method return Err(Canceled)).

AnalysisHost

AnalysisHost stores the current state of the world.

Assist
AssistConfig
AssistId

Unique identifier of the assist, should not be shown to the user directly.

CallInfo

Contains information about a call site. Specifically the FunctionSignatureand current parameter.

CallItem
Canceled

An "error" signifying that the operation was canceled.

Change

Encapsulate a bunch of raw .set calls on the database.

CompletionConfig
CompletionItem

CompletionItem describes a single completion variant in the editor pop-up. It is basically a POD with various properties. To construct a CompletionItem, use new method and the Builder struct.

CrateGraph

CrateGraph is a bit of information which turns a set of text files into a number of Rust crates. Each crate is defined by the FileId of its root module, the set of cfg flags (not yet implemented) and the set of dependencies. Note that, due to cfg's, there might be several crates for a single FileId! As in the rust-lang proper, a crate does not have a name. Instead, names are specified on dependency edges. That is, a crate might be known under different names in different dependent crates.

CrateId
Declaration
Diagnostic
DiagnosticsConfig
Documentation

Holds documentation

ExpandedMacro
FileId
FilePosition
FileRange
Fix
Fold
Highlight
HighlightModifiers
HighlightedRange
HoverConfig
HoverGotoTypeData
HoverResult

Contains the results when hovering over an item

Indel

InsertDelete -- a single "atomic" change to text

InlayHint
InlayHintsConfig
Label

A type to specify UI label, like an entry in the list of assists. Enforces proper casing:

LineCol
LineIndex
Markup
NavigationTarget

NavigationTarget represents and element in the editor's UI which you can click on to navigate to a particular piece of code.

Query
RangeInfo

Info associated with a text range.

Reference
ReferenceSearchResult
RenameError
ResolvedAssist
RootDatabase
Runnable
SearchScope

Generally, search_scope returns files that might contain references for the element. For pub(crate) things it's a crate, for pub things it's a crate and dependant crates. In some cases, the location of the references is known to within a TextRange, e.g. for things like local variables.

Semantics

Primary API to get semantic information, like types, from syntax trees.

SourceChange
SourceFileEdit
SourceRoot
SourceRootId

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.

SsrError
StructureNode
TextEdit

Enums

AssistKind
CompletionItemKind
CompletionScore
Edition
FileSystemEdit
FoldKind
HighlightModifier
HighlightTag
HoverAction
InlayKind
InsertTextFormat
PrimeCachesProgress
ReferenceAccess
ReferenceKind
RunnableKind
Severity
TestId

Type Definitions

Cancelable