1
0
Fork 0
mirror of https://forgejo.ellis.link/continuwuation/continuwuity.git synced 2025-07-29 03:08:31 +00:00
continuwuity/src/macros/implement.rs

27 lines
452 B
Rust
Raw Normal View History

use proc_macro::TokenStream;
use quote::quote;
use syn::{ItemFn, Meta, MetaList};
use crate::Result;
pub(super) fn implement(item: ItemFn, args: &[Meta]) -> Result<TokenStream> {
let Meta::List(MetaList {
path,
..
}) = &args
.first()
.expect("missing path to trait or item to implement")
else {
panic!("invalid path to item for implement");
};
let input = item;
let out = quote! {
impl #path {
#input
}
};
Ok(out.into())
}