Rust Knowledge Patch 是一套按主题组织的 Rust 知识补丁,用于在修改 Rust 源码、Cargo 配置、edition 设置、unsafe/FFI 代码、平台目标、文档测试或编译策略时参考。资料中以参考索引形式列出以下主题文件:edition-2024.md(edition 迁移、unsafe 要求、捕获与临时作用域、模式、宏、doctest、rustfmt)、language-and-macros.md(trait、闭包、opaque 类型、推断、模式、宏、名称解析、lint、被拒绝的代码)、safety-ffi-and-low-level.md(指针 provenance、pinning、分配、原子操作、FFI、ABI、intrinsics、内联汇编)、standard-library.md(集合、迭代器、范围、I/O、路径、文本、数值、const API、行为契约)、cargo.md(解析、配置、构建、工作区、发布、锁文件、注册表、缓存、环境变量)、targets-and-toolchains.md(链接器、符号修饰、WebAssembly、target 分层、平台基线、LLVM、原生链接)、docs-tests-and-formatting.md(Rustdoc、doctest、libtest、rustfmt、源码位置、诊断、路径重映射)。
使用方式上,资料建议先确认 crate 的 edition、声明的 rust-version、编译目标、panic 策略,以及构建是调用 Cargo 还是直接调用 rustc;在采用版本化语法、API、Cargo 键或 TOML 形式前检查声明的 MSRV;采用较新 API 前查看破坏性变更章节。对 unsafe、FFI、链接器或自定义目标,应验证目标特定要求,而不是依赖宿主行为。
破坏性变更与迁移部分提到:2024 edition 应视为语义迁移,可运行 cargo fix --edition 后人工审查其修改;它不会更新 doctest 或未被调用的导出宏体。需要编写 unsafe extern 块,将 no_mangle、export_name、link_section 包进 unsafe(...);std::env::set_var、remove_var 及 before_exec 在该 edition 下为 unsafe;static mut 引用需替换为原始引用或同步机制。还涉及 coherence 使用下一代 trait solver、never-type 回退 lint、模式捕获与析构行为变化等。
ABI、链接与符号方面提到 wasm32-unknown-unknown 在 1.89.0 采用标准化 C ABI,x86_64-unknown-linux-gnu 从 1.90.0 默认使用 LLD,稳定版 rustc 从 1.97.0 默认发出 v0 Rust 符号等。Cargo 部分提到 resolver v3、缓存回收、cargo publish --workspace 非原子、发布包始终包含 Cargo.lock 等。
语言与库特性部分列举了 async 闭包与 AsyncFn* trait、trait-object upcasting、use<...> 精确捕获、let chains、if let guards、cfg_select!、assert_matches!、array_windows、core::range、切片与 HashMap 的不相交可变访问、File 建议性锁、RwLockWriteGuard::downgrade、std::io::pipe、std::fmt::from_fn 等,并给出少量示例代码。
限制与缺失:资料未说明该补丁的安装方式、收费情况、支持的平台或具体使用步骤,暂未提供;使用时应以各主题参考文件为准。