Struct rustc_span::SpanData
source · pub struct SpanData {
pub lo: BytePos,
pub hi: BytePos,
pub ctxt: SyntaxContext,
pub parent: Option<LocalDefId>,
}
Expand description
Represents a span.
Spans represent a region of code, used for error reporting. Positions in spans
are absolute positions from the beginning of the SourceMap
, not positions
relative to SourceFile
s. Methods on the SourceMap
can be used to relate spans back
to the original source.
You must be careful if the span crosses more than one file, since you will not be
able to use many of the functions on spans in source_map and you cannot assume
that the length of the span is equal to span.hi - span.lo
; there may be space in the
BytePos
range between files.
SpanData
is public because Span
uses a thread-local interner and can’t be
sent to other threads, but some pieces of performance infra run in a separate thread.
Using Span
is generally preferred.
Fields§
§lo: BytePos
§hi: BytePos
§ctxt: SyntaxContext
Information about where the macro came from, if this piece of code was created by a macro expansion.
parent: Option<LocalDefId>
Implementations§
source§impl SpanData
impl SpanData
pub fn span(&self) -> Span
pub fn with_lo(&self, lo: BytePos) -> Span
pub fn with_hi(&self, hi: BytePos) -> Span
pub fn with_ctxt(&self, ctxt: SyntaxContext) -> Span
pub fn with_parent(&self, parent: Option<LocalDefId>) -> Span
pub fn is_visible(self, sm: &SourceMap) -> bool
Trait Implementations§
source§impl Ord for SpanData
impl Ord for SpanData
source§impl PartialOrd<SpanData> for SpanData
impl PartialOrd<SpanData> for SpanData
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moreimpl Copy for SpanData
impl Eq for SpanData
impl StructuralEq for SpanData
impl StructuralPartialEq for SpanData
Auto Trait Implementations§
impl RefUnwindSafe for SpanData
impl Send for SpanData
impl Sync for SpanData
impl Unpin for SpanData
impl UnwindSafe for SpanData
Blanket Implementations§
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 16 bytes