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 SourceFiles. 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: SyntaxContextInformation 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 PartialEq for SpanData
impl PartialEq for SpanData
source§impl PartialOrd for SpanData
impl PartialOrd 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 StructuralPartialEq for SpanData
Auto Trait Implementations§
impl DynSend for SpanData
impl DynSync for SpanData
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§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
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> Pointable for T
impl<T> Pointable for T
source§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