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: 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: Option<Lrc<SourceMap>>
The session’s source map, if there is one. 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, sm_inputs: Option<SourceMapInputs>, ) -> SessionGlobals
Auto Trait Implementations§
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>
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: 464 bytes