SuperAPI AI 工具集

axum-core-version-migration

通用与其它

查看项目

更新于 10-15 22:17

技能介绍

用途:该技能是 Axum 项目从 0.7 迁移到 0.8 的参考指南。Axum 0.7.0 发布于 2023-11-27,0.8.0 发布于 2024-12-02。升级包含一处启动时 panic 的变更(路径语法)和若干编译期变更,每项破坏性变更都是机械且可单独验证的。

适用时机:在 Cargo.toml 中把 axum = "0.7" 改为 axum = "0.8";0.7 可运行的应用升级后启动 panic;cargo update -p axum 后代码无法编译;自定义提取器不再编译(#[async_trait] 变更);WebSocket 代码编译失败(Message 载荷类型变更);判断某段路径字符串或示例针对 0.7 还是 0.8。

主要能力:提供 0.7 到 0.8 的破坏性变更对照,包括路径单捕获 /:id 改为 /{id}、通配 /*rest 改为 /{*rest}、字面花括号需双写 {{ 与 }}、自定义提取器去掉 #[async_trait] 改用原生 async fn、最低 Rust 版本 1.75、WebSocket Message::Text 由 String 改为 Utf8Bytes、Binary/Ping/Pong 由 Vec<u8> 改为 Bytes、Option<Path<T>> 等 Option<Extractor> 语义变化、Router 与 MethodRouter 需要 Sync、元组 Path 参数数量必须与捕获数一致、WebSocket::close 移除、serve 对监听器与 IO 类型泛型化、Serve::tcp_nodelay 移除、RawBody 与 extract::BodyStream 移除、axum::Server 移除改用 axum::serve、B 体类型参数移除、hyper::Body 再导出移除、headers 特性与 TypedHeader 及 Host 提取器移至 axum-extra。

使用方式:按迁移清单自上而下执行——升级依赖并运行 cargo update -p axum;将工具链设为 Rust 1.75 或更高;转换所有路由路径;删除自定义提取器上的 #[async_trait];修正 WebSocket Message 构造与模式绑定;审计所有 Option<Extractor>;检查元组 Path 参数数量;替换被移除 API;把 TypedHeader、headers 特性与 Host 提取器迁至 axum-extra;满足 Sync 约束;最后 cargo build 与 cargo test,并冒烟测试服务器启动。

限制:资料未提供该技能的安装命令、收费方式或平台信息。迁移中应始终把静默行为变更作为最高审计优先级,因为它们不会以 panic 或编译错误提示。不要用 without_v07_checks() 作为迁移捷径,它会让 :id 变成字面段而非捕获。axum::serve 在 0.7 与 0.8 都存在,不能单独用于判断版本。