The addition operator +
.
The addition assignment operator +=
.
A cheap reference-to-reference conversion. Used to convert a value to a
reference value with 'static
lifetime within generic code.
A trait to upcast a clonable entity and clone it.
It’s implemented for all entities which can be cloned.
The division operator /
.
The division assignment operator /=
.
A trait for capturing the number of variants in Enum. This trait can be autoderived by
strum_macros
.
Associates additional pieces of information with an Enum. This can be
autoimplemented by deriving EnumMessage
and annotating your variants with
#[strum(message="...")]
.
EnumProperty
is a trait that makes it possible to store additional information
with enum variants. This trait is designed to be used with the macro of the same
name in the strum_macros
crate. Currently, the only string literals are supported
in attributes, the other methods will be implemented as additional attribute types
become stabilized.
Error
is a trait representing the basic expectations for error values,
i.e., values of type
E
in
Result<T, E>
.
Constructor with single argument.
Constructor with two arguments.
Constructor with three arguments.
A value-to-value conversion that consumes the input value. The
opposite of
From
.
value-to-value conversion that consumes the input value. Change left and rught, but keep semantic of `From1``.
This trait designates that an Enum
can be iterated over. It can
be auto generated using strum_macros
on your behalf.
The multiplication operator *
.
The multiplication assignment operator *=
.
The subtraction operator -
.
The subtraction assignment operator -=
.
Trait to represent types that can be created by summing up an iterator.
An attempted conversion that consumes self
, which may or may not be
expensive.
A trait for retrieving the names of each variant in Enum. This trait can
be autoderived by strum_macros
.
What #[derive(Add)]
generates
What #[derive(AddAssign)]
generates
Derive macro to implement AsMut when-ever it’s possible to do automatically.
Derive macro to implement AsRef when-ever it’s possible to do automatically.
Converts enum variants to &'static str
.
What #[derive(Constructor)]
generates
Derive macro to implement Deref when-ever it’s possible to do automatically.
Derive macro to implement Deref when-ever it’s possible to do automatically.
What #[derive(Mul)]
generates
What #[derive(MulAssign)]
generates
Add a constant usize
equal to the number of variants.
Generate a new type with only the discriminant names.
Generated is_*()
methods for each variant.
E.g. Color.is_red()
.
Creates a new type that iterates of the variants of an enum.
Add a verbose message to an enum variant.
Add custom properties to enum variants.
Converts strings to enum variants based on their name.
Generated try_as_*()
methods for all tuple-style variants.
E.g. Message.try_as_write()
.
Implements Strum::VariantNames
which adds an associated constant VARIANTS
which is an array of discriminant names.
Using #[derive(Error)]
Provides an automatic From
implementation for struct wrapping a single value.
Add a function to enum that allows accessing variants by its discriminant
Provides an automatic
Index trait implementation when-ever it’s possible.
Provides an automatic
IndexMut trait implementation when-ever it’s possible.
Derive macro to implement From converting outer type into inner when-ever it’s possible to do automatically.
What #[derive(Into)]
generates
Using #[derive(IntoIterator)]
Implements From<MyEnum> for &'static str
on an enum.
What #[derive(IsVariant)]
generates
What #[derive(Mul)]
generates
What #[derive(MulAssign)]
generates
Provides an automatic new
implementation for struct wrapping a single value.
Provides an automatic
Not trait implementation for struct.
What #[derive(Add)]
generates
What #[derive(AddAssign)]
generates
Using #[derive(Sum)]
implements std::string::ToString
on an enum
What #[derive(TryInto)]
generates
What #[derive(Unwrap)]
generates
The derive_variadic_from
macro is designed to provide a way to implement the From
-like
traits for structs with a variable number of fields, allowing them to be constructed from
tuples of different lengths or from individual arguments. This functionality is particularly
useful for creating flexible constructors that enable different methods of instantiation for
a struct. By automating the implementation of traits, this macro reduces boilerplate code
and enhances code readability and maintainability.