Crate ra_ap_span

source ·
Expand description

File and span related types.


  • Maps items’ SyntaxNodes to ErasedFileAstIds and back.
  • AstId points to an AST node in a specific file.
  • Handle to a file in Vfs
  • Input to the analyzer is a set of files, where each file is identified by FileId and contains source code. However, another source of source code in Rust are macros: each macro can be thought of as producing a “temporary file”. To assign an id to such a file, we use the id of the macro call that produced the file. So, a HirFileId is either a FileId (source code written by user), or a MacroCallId (source code produced by macro).
  • MacroCallId identifies a particular macro invocation, like println!("Hello, {}", world).
  • Spans represent a region of code, used by the IDE to be able link macro inputs and outputs together. Positions in spans are relative to some SpanAnchor to make them more incremental friendly.
  • Maps absolute text ranges for the corresponding file to the relevant span data.
  • A syntax context describes a hierarchy tracking order of macro definitions.
  • A range in text, represented as a pair of TextSize.
  • A measure of text length. Also, equivalently, an index into text.



  • FileId used as the span for syntax node fixups. Any Span containing this file id is to be considered fake.
  • The root ast id always points to the encompassing file, using this in spans is discouraged as any range relative to it will be effectively absolute, ruining the entire point of anchored relative text ranges.


Type Aliases§