SuperAPI AI 工具集

rust-core-language

编程与开发

查看项目

更新于 10-26 16:23

技能介绍

用途

Rust Core Language 是一个面向稳定版 Rust 1.98.1、edition 2024 的技能,用于编写或审查地道的 Rust 代码。它聚焦于编译器不会替你捕获的问题:避免无谓克隆的所有权设计,以及机器生成 Rust 反复出现的失败模式。

主要能力

  • Edition 2024 特性:在配置 crate、使用 let chains / async closures 时提供指导。
  • 所有权与借用:设计函数签名与数据流,选择拥有还是借用参数、设计生命周期、使用 Rc/Arc 共享。
  • LLM 陷阱修复:审查或修复生成 Rust 中的 clone tax(为消除借用检查器报错而克隆,而非重新设计所有权)、unwrap/expect 泛滥、String 与 &str 误用、用索引循环替代迭代器、以及编译器本可省略的过度生命周期标注。

使用方式

技能包含强制性的 Agent 工作流:

  1. 使用 fuse-ai-pilot:research-expert 确认当前稳定版本及任何特性的稳定化发布版本(版本变化快)。
  2. 使用 fuse-ai-pilot:explore-codebase 在添加代码前阅读 Cargo.toml 中的 edition 及现有所有权约定。
  3. 编写代码后运行 fuse-ai-pilot:sniper 和 cargo clippy。
  4. 切勿凭记忆陈述稳定化版本——需对照 doc.rust-lang.org/releases.html 核实。

关键规则:

  • 先借用再拥有。参数使用 &T / &str / &[T],除非函数必须保留该值。
  • .clone() 需要理由。为消除借用检查器错误而克隆是设计异味(clone tax)。先重新设计所有权;仅当确实存在第二个所有者时才克隆。
  • 对可失败值不使用 .unwrap() / .expect(),除非有书面理由。合并前 grep 它们。优先使用 ?、match 或有文档说明的不变量。
  • 引用计数句柄使用 Arc::clone(&x) 而非 x.clone()——它使廉价的指针复制显式化,并与深克隆区分。
  • 迭代器优于索引循环。优先使用 iter()/map()/filter()/collect() 而非 for i in 0..len { v[i] }——无边界检查噪音,无差一错误。
  • 让省略机制工作。不要标注编译器可推断的生命周期。

已验证事实(来源已核对)

  • Edition 2024 在 Rust 1.85.0(2025-02-20)稳定,RFC #3501。
  • Let chains(if let A = x && let B = y && cond)在 1.88.0(2025-06-26)稳定,仅限 edition 2024——依赖 if let 临时作用域变更。
  • Async closures(async || { .. })在 1.85.0 稳定。
  • Rust 1.97.0(2026-07-09):v0 符号修饰为默认;Cargo build.warnings(CI 中 CARGO_BUILD_WARNINGS=deny,不使构建缓存失效);链接器输出通过 linker_messages lint 显示(默认 warn);整数 highest_one/lowest_one/bit_width。
  • Rust 1.98.0(2026-08-20):{integer}::format_into + core::fmt::NumBuffer(std 替代 itoa);f32/f64 algebraic_* 方法;str::strip_circumfix、str::substr_range、String::from_utf16le/from_utf16be。
  • gen blocks 不稳定——feature gate #![feature(gen_blocks)],跟踪 issue rust-lang/rust#117078,RFC #3513。不要在 stable 上使用;返回的迭代器尚未 fused,语法可能仍会变化。

参考指南

概念:

  • Edition 2024:edition-2024.md——在配置 edition、使用 let chains / async closures、检查特性稳定性时加载。
  • 所有权与借用:ownership-borrowing.md——在选择拥有还是借用参数、设计生命周期、使用 Rc/Arc 共享时加载。
  • LLM 陷阱:llm-pitfalls.md——在审查生成 Rust 的 clone tax、unwrap 泛滥、String/&str、索引循环时加载。

模板:

  • idiomatic-code.md——在需要借用优先签名、迭代器链和 let chains 的复制粘贴示例时加载。

验证清单

  • 若使用 edition-2024 特性,Cargo.toml 声明 edition = "2024"。
  • 没有纯粹为满足借用检查器而添加的 .clone()。
  • 每个 .unwrap()/.expect() 都有说明理由的注释或可证明不会失败。
  • 参数使用引用,除非需要所有权。
  • 没有编译器可省略的生命周期标注。
  • cargo clippy 干净,sniper 通过。

适用场景与限制

适用于编写或审查地道 Rust、设计所有权与借用、修复机器生成 Rust 的常见问题。不涉及错误类型设计(thiserror vs anyhow,属于 rust-error-handling)、异步运行时问题(属于 rust-async-concurrency)、SOLID/文件布局规则(属于 fuse-solid:solid-rust)。gen blocks 在 stable 上不可用。