Struct amplify_syn::SingularAttr [−][src]
Structure describing a procedural macro attribute with an optional value.
The means that if one has something like #[name1]
, #[name2 = "value"]
,
#[name3 = ::std::path::PathBuf)]
than name1
, name2 = "value"
, and
name3 = ::std::path::PathBuf
are three different attributes which can be
parsed and represented by the SingularAttr
structure.
NB: For #[attr(arg1, arg2 = value)]
style of proc macros use
ParametrizedAttr
structure. If you need to support both use Attr
enum.
Internally the structure is composed of the name
and value
fields,
where name is always a [Ident
] (corresponding name1
, name2
, name3
from the sample above) and value
is an optional literal [Lit
], with
corresponding cases of None
,
Some(
[AttrArgValue::Lit
](
Lit::Str
(
[LitStr
])))
, and
Some(
[AttrArgValue::Type
](
Type::Path
(
Path
)))
.
Fields
name: String
Optional attribute argument path part; for instance in
#[my(name = value)]
or in #[name = value]
this is a name
part
value: ArgValue
Attribute argument value part; for instance in #[name = value]
this is
the value
part
Implementations
impl SingularAttr
[src]
impl SingularAttr
[src]pub fn new(name: impl ToString) -> Self
[src]
Constructs named SingularAttr
without value
pub fn with(name: impl ToString, attrs: &Vec<Attribute>) -> Result<Self, Error>
[src]
Constructs SingularAttr
from a vector of all syn-parsed attributes,
selecting single attribute matching the provided name. If there are
multiple instances of the same attribute, fails with
Error::SingularAttrRequired
pub fn with_literal(name: impl ToString, lit: Lit) -> Self
[src]
Constructs named SingularAttr
setting its value to the provided
literal
pub fn with_type(name: impl ToString, ty: Type) -> Self
[src]
Constructs named SingularAttr
setting its value to the provided
rust type value
pub fn from_attribute(attr: &Attribute) -> Result<Self, Error>
[src]
Constructs SingularAttr
from a given syn::Attribute
by parsing
its data. Accepts only attributes having form #[attr(name = value)]
and errors for other attribute types with Error::ArgNameMustBeIdent
and Error::SingularAttrRequired
pub fn literal_value(&self) -> Result<Lit, Error>
[src]
Returns literal value, if any, or fails with
Error::ArgValueRequired
. See ArgValue::literal_value
for the
details.
pub fn type_value(&self) -> Result<Type, Error>
[src]
Returns type value, if any, or fails with Error::ArgValueRequired
.
See ArgValue::literal_value
for the details.
pub fn merge(&mut self, other: Self) -> Result<(), Error>
[src]
Merges data from the other
into the self.
Errors
- Fails with
Error::NamesDontMatch
if the names of the self and theother
do not match - Fails with
Error::MultipleSingularValues
if both self and theother
has a named argument with the same name but different values.
pub fn merged(self, other: Self) -> Result<Self, Error>
[src]
Does merging as in SingularAttr::merge
, but unlike it consumes
the self and returns a merged structure in case of the successful
operation. Useful in operation chains.
pub fn enrich(&mut self, attr: &Attribute) -> Result<(), Error>
[src]
Enriches current attribute data by adding information from the provided
syn::Attribute
.
Errors
- Fails with
Error::NamesDontMatch
if the names of the self and the provided attribute do not match - Fails with
Error::MultipleSingularValues
if both self and the provided attribute has a named argument with the same name but different values.
pub fn enriched(self, attr: &Attribute) -> Result<Self, Error>
[src]
Performs enrich operation as in SingularAttr::enrich
, but unlike it
consumes the self and returns an enriched structure in case of the
successful operation. Useful in operation chains.
pub fn check(&mut self, req: ArgValueReq) -> Result<(), Error>
[src]
Checks that the structure meets provided value requirements (see
[ValueReq
]), generating Error
if the requirements are not met.
pub fn checked(self, req: ArgValueReq) -> Result<Self, Error>
[src]
Performs check as in SingularAttr::check
, but unlike it consumes the
self and returns a itself in case of the successful operation.
Useful in operation chains.
Trait Implementations
impl Clone for SingularAttr
[src]
impl Clone for SingularAttr
[src]fn clone(&self) -> SingularAttr
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
Auto Trait Implementations
impl RefUnwindSafe for SingularAttr
impl RefUnwindSafe for SingularAttr
impl !Send for SingularAttr
impl !Send for SingularAttr
impl !Sync for SingularAttr
impl !Sync for SingularAttr
impl Unpin for SingularAttr
impl Unpin for SingularAttr
impl UnwindSafe for SingularAttr
impl UnwindSafe for SingularAttr