pub enum AttributeDuplicates {
DuplicatesOk,
WarnFollowing,
WarnFollowingWordOnly,
ErrorFollowing,
ErrorPreceding,
FutureWarnFollowing,
FutureWarnPreceding,
}
Expand description
How to handle multiple duplicate attributes on the same item.
Variants§
DuplicatesOk
Duplicates of this attribute are allowed.
This should only be used with attributes where duplicates have semantic
meaning, or some kind of “additive” behavior. For example, #[warn(..)]
can be specified multiple times, and it combines all the entries. Or use
this if there is validation done elsewhere.
WarnFollowing
Duplicates after the first attribute will be an unused_attribute warning.
This is usually used for “word” attributes, where they are used as a
boolean marker, like #[used]
. It is not necessarily wrong that there
are duplicates, but the others should probably be removed.
WarnFollowingWordOnly
Same as WarnFollowing
, but only issues warnings for word-style attributes.
This is only for special cases, for example multiple #[macro_use]
can
be warned, but multiple #[macro_use(...)]
should not because the list
form has different meaning from the word form.
ErrorFollowing
Duplicates after the first attribute will be an error.
This should be used where duplicates would be ignored, but carry extra
meaning that could cause confusion. For example, #[stable(since="1.0")] #[stable(since="2.0")]
, which version should be used for stable
?
ErrorPreceding
Duplicates preceding the last instance of the attribute will be an error.
This is the same as ErrorFollowing
, except the last attribute is the
one that is “used”. This is typically used in cases like codegen
attributes which usually only honor the last attribute.
FutureWarnFollowing
Duplicates after the first attribute will be an unused_attribute warning with a note that this will be an error in the future.
This should be used for attributes that should be ErrorFollowing
, but
because older versions of rustc silently accepted (and ignored) the
attributes, this is used to transition.
FutureWarnPreceding
Duplicates preceding the last instance of the attribute will be a warning, with a note that this will be an error in the future.
This is the same as FutureWarnFollowing
, except the last attribute is
the one that is “used”. Ideally these can eventually migrate to
ErrorPreceding
.
Trait Implementations§
source§impl Clone for AttributeDuplicates
impl Clone for AttributeDuplicates
source§fn clone(&self) -> AttributeDuplicates
fn clone(&self) -> AttributeDuplicates
source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Default for AttributeDuplicates
impl Default for AttributeDuplicates
source§fn default() -> AttributeDuplicates
fn default() -> AttributeDuplicates
impl Copy for AttributeDuplicates
Auto Trait Implementations§
impl DynSend for AttributeDuplicates
impl DynSync for AttributeDuplicates
impl Freeze for AttributeDuplicates
impl RefUnwindSafe for AttributeDuplicates
impl Send for AttributeDuplicates
impl Sync for AttributeDuplicates
impl Unpin for AttributeDuplicates
impl UnwindSafe for AttributeDuplicates
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<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: 1 byte
Size for each variant:
DuplicatesOk
: 0 bytesWarnFollowing
: 0 bytesWarnFollowingWordOnly
: 0 bytesErrorFollowing
: 0 bytesErrorPreceding
: 0 bytesFutureWarnFollowing
: 0 bytesFutureWarnPreceding
: 0 bytes