bon_macros/util/
fn_arg.rs
1pub(crate) trait FnArgExt {
2 fn attrs_mut(&mut self) -> &mut Vec<syn::Attribute>;
3 fn ty_mut(&mut self) -> &mut syn::Type;
4 fn as_receiver(&self) -> Option<&syn::Receiver>;
5 fn as_typed(&self) -> Option<&syn::PatType>;
6}
7
8impl FnArgExt for syn::FnArg {
9 fn attrs_mut(&mut self) -> &mut Vec<syn::Attribute> {
10 match self {
11 Self::Receiver(arg) => &mut arg.attrs,
12 Self::Typed(arg) => &mut arg.attrs,
13 }
14 }
15
16 fn ty_mut(&mut self) -> &mut syn::Type {
17 match self {
18 Self::Receiver(arg) => &mut arg.ty,
19 Self::Typed(arg) => &mut arg.ty,
20 }
21 }
22
23 fn as_receiver(&self) -> Option<&syn::Receiver> {
24 match self {
25 Self::Typed(_) => None,
26 Self::Receiver(arg) => Some(arg),
27 }
28 }
29
30 fn as_typed(&self) -> Option<&syn::PatType> {
31 match self {
32 Self::Typed(arg) => Some(arg),
33 Self::Receiver(_) => None,
34 }
35 }
36}