Newer
Older
use syn::{Error, ItemFn, Meta, Path};
use utils::get_named_generics;
pub(super) fn implement(item: ItemFn, args: &[Meta]) -> Result<TokenStream> {
let generics = get_named_generics(args, "generics")?;
let receiver = get_receiver(args)?;
let params = get_named_generics(args, "params")?;
fn get_receiver(args: &[Meta]) -> Result<Path> {
let receiver = &args
.first()
.ok_or_else(|| Error::new(Span::call_site().into(), "Missing required argument to receiver"))?;
let Meta::Path(receiver) = receiver else {
return Err(Error::new(Span::call_site().into(), "First argument is not path to receiver"));
};
Ok(receiver.clone())
}