}
fn field_pat(input: ParseStream) -> Result<FieldPat> {
+ let attrs = input.call(Attribute::parse_outer)?;
let boxed: Option<Token![box]> = input.parse()?;
let by_ref: Option<Token![ref]> = input.parse()?;
let mutability: Option<Token![mut]> = input.parse()?;
|| member.is_unnamed()
{
return Ok(FieldPat {
- attrs: Vec::new(),
+ attrs,
member,
colon_token: input.parse()?,
pat: input.parse()?,
if let Some(boxed) = boxed {
pat = Pat::Box(PatBox {
attrs: Vec::new(),
- pat: Box::new(pat),
box_token: boxed,
+ pat: Box::new(pat),
});
}
Ok(FieldPat {
+ attrs,
member: Member::Named(ident),
- pat: Box::new(pat),
- attrs: Vec::new(),
colon_token: None,
+ pat: Box::new(pat),
})
}
impl ToTokens for PatWild {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
self.underscore_token.to_tokens(tokens);
}
}
impl ToTokens for PatIdent {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
self.by_ref.to_tokens(tokens);
self.mutability.to_tokens(tokens);
self.ident.to_tokens(tokens);
impl ToTokens for PatStruct {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
self.path.to_tokens(tokens);
self.brace_token.surround(tokens, |tokens| {
self.fields.to_tokens(tokens);
impl ToTokens for PatTupleStruct {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
self.path.to_tokens(tokens);
self.pat.to_tokens(tokens);
}
impl ToTokens for PatPath {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
private::print_path(tokens, &self.qself, &self.path);
}
}
impl ToTokens for PatTuple {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
self.paren_token.surround(tokens, |tokens| {
self.elems.to_tokens(tokens);
});
impl ToTokens for PatBox {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
self.box_token.to_tokens(tokens);
self.pat.to_tokens(tokens);
}
impl ToTokens for PatReference {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
self.and_token.to_tokens(tokens);
self.mutability.to_tokens(tokens);
self.pat.to_tokens(tokens);
impl ToTokens for PatRest {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
self.dot2_token.to_tokens(tokens);
}
}
impl ToTokens for PatLit {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
self.expr.to_tokens(tokens);
}
}
impl ToTokens for PatRange {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
self.lo.to_tokens(tokens);
match &self.limits {
RangeLimits::HalfOpen(t) => t.to_tokens(tokens),
impl ToTokens for PatSlice {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
self.bracket_token.surround(tokens, |tokens| {
self.elems.to_tokens(tokens);
});
impl ToTokens for PatMacro {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
self.mac.to_tokens(tokens);
}
}
impl ToTokens for PatOr {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
self.leading_vert.to_tokens(tokens);
self.cases.to_tokens(tokens);
}
impl ToTokens for FieldPat {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ tokens.append_all(self.attrs.outer());
if let Some(colon_token) = &self.colon_token {
self.member.to_tokens(tokens);
colon_token.to_tokens(tokens);