Struct rustc_span::SessionGlobals
source · pub struct SessionGlobals {
pub(crate) symbol_interner: Interner,
pub(crate) span_interner: Lock<SpanInterner>,
pub(crate) metavar_spans: Lock<FxHashMap<Span, Span>>,
pub(crate) hygiene_data: Lock<HygieneData>,
pub(crate) source_map: Lock<Option<Lrc<SourceMap>>>,
}
Expand description
Per-session global variables: this struct is stored in thread-local storage in such a way that it is accessible without any kind of handle to all threads within the compilation session, but is not accessible outside the session.
Fields§
§symbol_interner: Interner
§span_interner: Lock<SpanInterner>
§metavar_spans: Lock<FxHashMap<Span, Span>>
Maps a macro argument token into use of the corresponding metavariable in the macro body.
Collisions are possible and processed in maybe_use_metavar_location
on best effort basis.
hygiene_data: Lock<HygieneData>
§source_map: Lock<Option<Lrc<SourceMap>>>
A reference to the source map in the Session
. It’s an Option
because it can’t be initialized until Session
is created, which
happens after SessionGlobals
. set_source_map
does the
initialization.
This field should only be used in places where the Session
is truly
not available, such as <Span as Debug>::fmt
.
Implementations§
source§impl SessionGlobals
impl SessionGlobals
pub fn new(edition: Edition) -> SessionGlobals
Auto Trait Implementations§
impl DynSend for SessionGlobals
impl DynSync for SessionGlobals
impl !Freeze for SessionGlobals
impl !RefUnwindSafe for SessionGlobals
impl !Send for SessionGlobals
impl !Sync for SessionGlobals
impl Unpin for SessionGlobals
impl !UnwindSafe for SessionGlobals
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> 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>
§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: 472 bytes