pub(crate) struct SyntheticAttrState {
cfg_trace: ThinVec<(CfgEntry, Span)>,
cfg_attr_trace: bool,
}Expand description
This struct contains the state necessary to convert synthetic attributes to hir attributes The only conversion that really happens here is that multiple synthetic attributes are merged into a single hir attribute, representing their combined state. FIXME: We should make this a nice and extendable system if this is going to be used more often
Fields§
§cfg_trace: ThinVec<(CfgEntry, Span)>Attribute state for SyntheticAttr::CfgTrace attributes.
cfg_attr_trace: boolAttribute state for SyntheticAttr::CfgAttrTrace attributes.
The arguments of these attributes is no longer relevant for any later passes, only their
presence. So we discard the arguments here.
Implementations§
Source§impl SyntheticAttrState
impl SyntheticAttrState
pub(crate) fn accept_synthetic_attr( &mut self, attr_span: Span, lower_span: impl Copy + Fn(Span) -> Span, synthetic: &SyntheticAttr, )
pub(crate) fn finalize_synthetic_attrs(self, attributes: &mut Vec<Attribute>)
Trait Implementations§
Source§impl Default for SyntheticAttrState
impl Default for SyntheticAttrState
Source§fn default() -> SyntheticAttrState
fn default() -> SyntheticAttrState
Auto Trait Implementations§
impl DynSend for SyntheticAttrState
impl DynSync for SyntheticAttrState
impl Freeze for SyntheticAttrState
impl RefUnwindSafe for SyntheticAttrState
impl Send for SyntheticAttrState
impl Sync for SyntheticAttrState
impl Unpin for SyntheticAttrState
impl UnsafeUnpin for SyntheticAttrState
impl UnwindSafe for SyntheticAttrState
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
impl<T> ErasedDestructor for Twhere
T: 'static,
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>
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