Trait attribute_derive::ConvertParsed
source · pub trait ConvertParsedwhere
Self: Sized,
Self::Type: Error,{
type Type;
// Required method
fn convert(value: Self::Type) -> Result<Self>;
// Provided methods
fn default_by_default() -> bool { ... }
fn default() -> Self { ... }
fn as_flag() -> Option<Self::Type> { ... }
fn aggregate(
this: Option<IdentValue<Self::Type>>,
other: Option<IdentValue<Self::Type>>,
error_msg: &str
) -> Result<Option<IdentValue<Self::Type>>> { ... }
}
Expand description
Helper trait to convert syn types implementing Parse
like
LitStr
to rust types like String
You probably don’t need to implement this trait, as most syn types like
LitStr
and Type
or that have a direct equivalent in
those like String
, char
or f32
are already implemented. A
special treatment have Vecs
which are parsed using the helper
Array
with the syntax [a, b, c]
and Options
that will be
None
if not specified and Some
when the value is specified via the
attribute. It is not specified via Some(value)
but as just value
.
Required Associated Types§
Required Methods§
Provided Methods§
sourcefn default_by_default() -> bool
fn default_by_default() -> bool
sourcefn as_flag() -> Option<Self::Type>
fn as_flag() -> Option<Self::Type>
Returns the value when this type is specified as flag i.e. just
#[attr(default)]
instead of #[attr(default=true)]
. This relies
on Self::default
.
sourcefn aggregate(
this: Option<IdentValue<Self::Type>>,
other: Option<IdentValue<Self::Type>>,
error_msg: &str
) -> Result<Option<IdentValue<Self::Type>>>
fn aggregate( this: Option<IdentValue<Self::Type>>, other: Option<IdentValue<Self::Type>>, error_msg: &str ) -> Result<Option<IdentValue<Self::Type>>>
Should values of this type be aggregated instead of conflict if specified multiple times
Currently this is only implemented for Arrays
Implementations on Foreign Types§
source§impl ConvertParsed for Question
impl ConvertParsed for Question
source§impl ConvertParsed for TypeParamBound
impl ConvertParsed for TypeParamBound
source§impl ConvertParsed for DeriveInput
impl ConvertParsed for DeriveInput
source§impl ConvertParsed for f64
impl ConvertParsed for f64
source§impl ConvertParsed for TypeReference
impl ConvertParsed for TypeReference
source§impl ConvertParsed for ExprMacro
impl ConvertParsed for ExprMacro
source§impl ConvertParsed for ExprBlock
impl ConvertParsed for ExprBlock
source§impl ConvertParsed for ExprTuple
impl ConvertParsed for ExprTuple
source§impl ConvertParsed for TraitBoundModifier
impl ConvertParsed for TraitBoundModifier
source§impl<Output, Parsed> ConvertParsed for Vec<Output>where
Output: ConvertParsed<Type = Parsed>,
Parsed: Clone,
impl<Output, Parsed> ConvertParsed for Vec<Output>where Output: ConvertParsed<Type = Parsed>, Parsed: Clone,
source§impl ConvertParsed for ExprBinary
impl ConvertParsed for ExprBinary
source§impl ConvertParsed for Abstract
impl ConvertParsed for Abstract
source§impl ConvertParsed for ExprArray
impl ConvertParsed for ExprArray
source§impl ConvertParsed for usize
impl ConvertParsed for usize
source§impl ConvertParsed for ExprStruct
impl ConvertParsed for ExprStruct
source§impl ConvertParsed for ExprMatch
impl ConvertParsed for ExprMatch
source§impl ConvertParsed for ExprForLoop
impl ConvertParsed for ExprForLoop
source§impl ConvertParsed for ExprTryBlock
impl ConvertParsed for ExprTryBlock
source§impl ConvertParsed for ExprBreak
impl ConvertParsed for ExprBreak
source§impl ConvertParsed for FatArrow
impl ConvertParsed for FatArrow
source§impl ConvertParsed for TypeTraitObject
impl ConvertParsed for TypeTraitObject
source§impl ConvertParsed for TokenStream
impl ConvertParsed for TokenStream
Try to avoid using this, as it will consume everything behind, so it needs to be defined as the last parameter.
In the future there might be something to allow better handling of this (maybe by putting it
into ()
)