syn_utils/
generic_args.rs

1use 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}