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
sourcepub(crate) fn with_ctxt(&self, ctxt: SyntaxContext) -> Span
pub(crate) fn with_ctxt(&self, ctxt: SyntaxContext) -> Span
Avoid if possible, Span::map_ctxt
should be preferred.
sourcepub(crate) fn with_parent(&self, parent: Option<LocalDefId>) -> Span
pub(crate) fn with_parent(&self, parent: Option<LocalDefId>) -> Span
Avoid if possible, Span::with_parent
should be preferred.
Trait Implementations§
source§impl Ord for SpanData
impl Ord for SpanData
source§impl PartialOrd for SpanData
impl PartialOrd for SpanData
impl Copy for SpanData
impl Eq for SpanData
impl StructuralPartialEq for SpanData
Auto Trait Implementations§
impl Freeze for SpanData
impl RefUnwindSafe for SpanData
impl Send for SpanData
impl Sync for SpanData
impl Unpin for SpanData
impl UnwindSafe for SpanData
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
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