syn_utils/
generic_args.rs1use crate::*;
2
3pub trait GenericArgumentExt {
4 fn as_type(&self) -> syn::Result<&Type>;
5 fn as_type_mut(&mut self) -> syn::Result<&mut Type>;
6}
7
8impl GenericArgumentExt for GenericArgument {
9 fn as_type(&self) -> syn::Result<&Type> {
10 if let GenericArgument::Type(ty) = self {
11 Ok(ty)
12 } else {
13 bail!(self, "Expected this generic argument to be a type");
14 }
15 }
16
17 fn as_type_mut(&mut self) -> syn::Result<&mut Type> {
18 if let GenericArgument::Type(ty) = self {
19 Ok(ty)
20 } else {
21 bail!(self, "Expected this generic argument to be a type");
22 }
23 }
24}