修改路由错误信息

This commit is contained in:
李运家 2024-10-03 11:43:07 +08:00
parent 8a28c0e577
commit 2c48ee6537

View File

@ -18,7 +18,7 @@ struct Args {
impl Parse for Args { impl Parse for Args {
fn parse(input: ParseStream) -> syn::parse::Result<Self> { fn parse(input: ParseStream) -> syn::parse::Result<Self> {
let vars = Punctuated::<syn::Expr, syn::Token![,]>::parse_terminated(input)?; let vars = Punctuated::<syn::Expr, syn::Token![,]>::parse_terminated(input)?;
Ok(Args { Ok(Args {
vars: vars.into_iter().collect(), vars: vars.into_iter().collect(),
}) })
@ -31,7 +31,7 @@ impl Args {
Some(var) => Ok(var.clone()), Some(var) => Ok(var.clone()),
None => return Err(syn::Error::new( None => return Err(syn::Error::new(
Span::call_site().into(), Span::call_site().into(),
"No Route was provided" "route must have one argument"
)) ))
} }
} }
@ -41,26 +41,26 @@ impl Args {
pub fn gen_route(attr: TokenStream, item: TokenStream) -> TokenStream { pub fn gen_route(attr: TokenStream, item: TokenStream) -> TokenStream {
let args = parse_macro_input!(attr as Args); let args = parse_macro_input!(attr as Args);
let func = parse_macro_input!(item as ItemFn); let func = parse_macro_input!(item as ItemFn);
let vis = func.vis.clone(); let vis = func.vis.clone();
let ident = func.sig.ident.clone(); let ident = func.sig.ident.clone();
let method = args.get_arg(0).unwrap(); let method = args.get_arg(0).unwrap();
let route = args.get_arg(1).unwrap(); let route = args.get_arg(1).unwrap();
let expanded = quote! { let expanded = quote! {
#[allow(non_camel_case_types)] #[allow(non_camel_case_types)]
#vis struct #ident; #vis struct #ident;
impl #ident { impl #ident {
#vis fn route() -> axum::Router { #vis fn route() -> axum::Router {
#func #func
axum::Router::new().route(#route, #method (#ident)) axum::Router::new().route(#route, #method (#ident))
} }
} }
}; };
expanded.into() expanded.into()
} }