用途:在编写或修复 Axum handler 函数时使用,帮助决定参数列表与返回类型,并排查函数为何被拒绝为 handler。Axum 没有路由宏,函数是否合格完全由 Handler<T, S> trait 及其 blanket impl 决定,不合格时只报出笼统的 trait bound 错误。
主要能力:总结六条 handler 判定标准——必须是 async fn;参数不超过 16 个且均为 Send;除最后一个外每个参数实现 FromRequestParts<S>;最后一个参数实现 FromRequest<S, M>;返回类型实现 IntoResponse;产生的 future 为 Send。闭包 handler 另需 Clone + Send 且 'static。还给出返回类型对照(()、String、Json<T>、Html<T>、StatusCode、Result<T, E>、impl IntoResponse 等)、Result handler 与 ? 运算符用法、async 闭包 handler、用 HandlerWithoutStateExt 直接服务单个 handler,以及 16 参数上限的合并结构体方案。
使用方式:按“先 parts 提取器、最后一个 body 提取器”的顺序书写签名;body 提取器只能有一个且必须放最后;不要跨 .await 持有 Rc、RefCell 借用或 std::sync::MutexGuard;编译失败时先用 axum-macros 的 #[debug_handler] 获取精确诊断。
适用场景与限制:适用于 Axum 0.7 与 0.8,handler 模型在两版一致,仅路由路径语法有版本差异。资料未提供安装命令、收费或平台信息。