Coding

Rust工具包-免费版

Try it

Rust 开发优选实践助手免费版,面向个人开发者与学习者。核心能力:,可自发提升工作效率. 适用于需要rust toolkit相关能力的开发场景,包含结构化的工作流程和可复用的模板,帮助用户快速完成任务并保持代码质量. 适用于需要rust toolkit相关能力的开发场景,包含结构化的工作流程和配置指引.

What it does

Rust 开发优选实践助手免费版,面向个人开发者与学习者。核心能力:,可自发提升工作效率. 适用于需要rust toolkit相关能力的开发场景,包含结构化的工作流程和可复用的模板,帮助用户快速完成任务并保持代码质量. 适用于需要rust toolkit相关能力的开发场景,包含结构化的工作流程和配置指引.

The skill document

Rust 工具包 - 免费版

概述

Rust 工具包免费版是面向个人开发者的 Rust 优选实践助手。覆盖 Rust 开发中最常见的所有权、借用、生命周期陷阱,提供即查即用的修复建议与代码规范,帮助开发者写出安全可靠的系统级代码.

核心能力

1. 所有权与借用

检测所有权转移、借用冲突、可变与不可变借用混用等常见问题.

处理: 解析所有权与借用的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回所有权与借用的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作

2. 生命周期标注

指导何时需要显式生命周期标注,何时可以省略(生命周期省略规则).

处理: 解析生命周期标注的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回生命周期标注的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作

核心功能执行

input_params参数进行配置.

处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:Rust、开发优选实践助手、避免所有权、借用与生命周期常、见陷阱、适合个人学习、免费版、面向个人开发者与、学习者、核心能力、所有权与借用陷阱、生命周期标注指导、错误处理、Result、Option、优选实践、并发编程、async、await、channels、Mutex、Trait、与泛型使用规范、Cargo、项目配置、常见编译错误解读等.

错误处理

  • 边界输入处理: 空输入返回提示信息, 超长输入自动截断
  • 降级策略: 异常时返回默认值, 确保流程不中断
  • 执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令机制: 失败时自动执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令, 最多3次

ResultOption 的正确使用,? 操作符的优选实践.

处理: 解析错误处理的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回错误处理的响应数据,包含状态码、结果和日志.

4. 并发编程

async/awaitchannelsMutex/RwLockArc 的使用场景与陷阱.

处理: 解析并发编程的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回并发编程的响应数据,包含状态码、结果和日志.

5. Trait 与泛型

Trait 定义与实现、泛型约束、Trait Object(dyn)vs 泛型参数.

处理: 解析Trait 与泛型的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回Trait 与泛型的响应数据,包含状态码、结果和日志.

6. Cargo 配置

Cargo.toml 配置、依赖管理、feature flags、workspace.

处理: 解析Cargo 配置的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回Cargo 配置的响应数据,包含状态码、结果和日志.

7. 编译错误解读

将 Rust 编译器复杂的错误信息翻译为可理解的修复建议.

处理: 解析编译错误解读的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回编译错误解读的响应数据,包含状态码、结果和日志.

使用场景

场景一:避免借用冲突

Rust 中最常见的编译错误之一:可变与不可变借用冲突.

输入格式

参数名类型必填说明
inputstringRust工具包-免费版处理的输入数据或指令
optionsobject附加配置选项,如模式选择、格式偏好等
callback_urlstring异步处理完成后的回调通知URL
// 错误写法 - 同时存在可变和不可变借用
fn main() {
    let mut data = vec![1, 2, 3];
    let first = &data[0];      // 不可变借用
    data.push(4);              // 错误!可变借用冲突
    println!("{}", first);     // first 还在使用中
}
// ...
// 正确写法 - 借用在使用后结束
fn main() {
    let first = &data[0];
    println!("{}", first);     // 借用在此结束
    data.push(4);              // 现在可以可变借用了
}
// ...
// 或使用拷贝
fn main() {
    let first = data[0];       // 拷贝值,不是借用
    data.push(4);              // 没问题
    println!("{}", first);
}

场景二:正确使用生命周期

理解何时需要显式标注生命周期.

// 生命周期省略规则适用的场景 - 无需标注
fn first_word(s: &str) -> &str {
    // 编译器自动推断:输入引用的生命周期 = 输出引用的生命周期
    let bytes = s.as_bytes();
    for (i, &byte) in bytes.iter().enumerate() {
        if byte == b' ' {
            return &s[0..i];
        }
    }
    &s[..]
}
// ...
// 需要显式标注的场景 - 多个输入引用
fn longest<'a>(s1: &'a str, s2: &'a str) -> &'a str {
    // 返回值的生命周期取决于两个输入中较短的那个
    if s1.len() > s2.len() {
        s1
    } else {
        s2
    }
}
// ...
// 结构体中的生命周期
struct Excerpt<'a> {
    part: &'a str,  // 结构体持有引用必须标注生命周期
}

场景三:错误处理优选实践

使用 Result? 操作符进行错误传播.

use std::fs;
use std::io;
use std::num::ParseIntError;
// ...
// 错误写法 - 使用 unwrap/expect 在生产代码中
fn read_config() -> i32 {
    let content = fs::read_to_string("config.txt").unwrap(); // 危险!
    let value: i32 = content.trim().parse().unwrap();         // 危险!
    value
}
// ...
// 正确写法 - 使用 Result 和 ? 传播错误
fn read_config() -> Result> {
    Ok(value)
}
// ...
// 自定义错误类型
#[derive(Debug)]
enum ConfigError {
    Io(io::Error),
    Parse(ParseIntError),
}
// ...
impl From for ConfigError {
    fn from(e: io::Error) -> Self { ConfigError::Io(e) }
}
impl From for ConfigError {
    fn from(e: ParseIntError) -> Self { ConfigError::Parse(e) }
}
// ...
fn read_config_typed() -> Result {
    Ok(value)
}

不适用场景

以下场景Rust工具包-免费版不适合处理:

  • 无明确技术栈的模糊需求
  • 纯架构设计决策
  • 运维部署管理

触发条件

需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于非本工具能力范围的需求.

快速开始

  1. 阅读## 核心能力章节了解skill功能
  2. 按## 依赖说明配置环境
  3. 执行所需能力对应的命令
  4. 参考## 错误处理章节处理异常
  5. 查看## FAQ解答常见疑问

常见陷阱速查

// 1. 可变借用冲突 -> 确保借用不重叠
let mut v = vec![1, 2, 3];
let r = &v[0];        // 不可变借用开始
// v.push(4);         // 错误!
println!("{}", r);    // 借用结束
v.push(4);            // 现在可以了
// ...
// 2. 字符串拼接用 format! -> 不要用 + (需 &String)
let s1 = String::from("Hello");
let s2 = String::from("World");
let s3 = format!("{} {}", s1, s2);  // 推荐
// ...
// 3. 遍历时修改 -> 使用索引或 drain
let mut v = vec![1, 2, 3, 4];
let mut i = 0;
while i < v.len() {
    if v[i] % 2 == 0 {
        v.remove(i);
    } else {
        i += 1;
    }
}
// ...
// 4. 用 clone 替代引用 -> 简化所有权(性能允许时)
fn process(data: Vec) -> Vec {  // 取得所有权
    data.iter().map(|x| x * 2).collect()
}
let original = vec![1, 2, 3];
let result = process(original.clone());  // clone 保留原始数据
// ...
// 5. 用 Cow 处理可能借用的数据
use std::borrow::Cow;
fn process(input: &str) -> Cow {
    if input.contains("bad") {
        Cow::Owned(input.replace("bad", "good"))  // 新分配
    } else {
        Cow::Borrowed(input)  // 零拷贝
    }
}

Cargo 项目配置

# Cargo.toml
[package]
name = "my-project"
version = "0.1.0"
edition = "2021"
# ...
[dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
# ...
[profile.release]
opt-level = 3
lto = true
codegen-units = 1

示例

陷阱速查表

陷阱错误写法正确写法
借用冲突同时 &mut 和 &借用不重叠
字符串拼接s1 + s2format!("{}{}", s1, s2)
遍历时删除for x in &v { v.remove() }用索引或 retain
unwrap 滥用.unwrap()? 操作符
所有权困惑到处 .clone()理解所有权传递
生命周期全部显式标注先省略,编译器提示再标注
Trait Object滥用 dyn优先用泛型
闭包捕获move 误用按需使用 move

常用 Clippy Lint

# clippy 配置
# .clippy.toml
msrv = "1.70.0"
# ...
# 运行 clippy
# cargo clippy -- -W clippy::all -W clippy::pedantic

优选实践

  1. 优先用 & 借用:不需要所有权时用引用,避免不必要的 clone
  2. ? 传播错误:不要滥用 unwrap(),生产代码用 Result + ?
  3. 生命周期先省略:先不标注,编译器报错再加,大部分场景可省略
  4. 泛型优先 Trait Object:性能敏感场景用泛型(impl Trait),灵活性优先用 dyn Trait
  5. Cow 优化拷贝:可能不需要拷贝的场景使用 CowCow<[T]>
  6. 开启 Clippy:每次提交前运行 cargo clippy,修复所有警告
  7. retain 过滤:需要删除元素时用 v.retain(|x| condition) 而非循环 remove

常见问题

Q: "cannot borrow as mutable because it is also borrowed as immutable" 怎么解决?

A: 这是最常见的借用冲突。确保不可变借用在可变借用之前结束使用。方法:1) 提前使用完不可变借用;2) 拷贝值而非借用;3) 重构代码结构减少借用重叠.

Q: 什么时候用 String 什么时候用 &str?

A: 函数参数优先用 &str(更通用,接受 &String&str)。需要所有权或需要修改时用 String。结构体字段通常用 String(拥有数据)。返回值如果引用输入参数用 &str,否则用 String.

Q: Boximpl Trait 的区别?

A: impl Trait 是静态分发(编译时确定类型,零开销,但生成多份代码)。Box 是动态分发(运行时确定,有虚函数表开销,但代码体积小)。性能优先用 impl Trait,需要集合存储不同类型或递归类型用 Box.

Q: async 函数返回什么类型?

A: async 函数返回 impl Future。通常不需要显式标注,让编译器推断。如果需要 dyn 异步 trait,使用 Pin + Send>> 或使用 async-trait 宏.

依赖说明

运行环境

  • Agent平台: 支持 SKILL.md 的任意 AI Agent(Claude Code / Cursor / Codex / Gemini CLI 等)
  • 操作系统: Windows / macOS / Linux
  • Rust: 1.70+

依赖详情

依赖项类型是否必需获取方式
Rust编译器必需rustup 安装
Cargo包管理必需随 Rust 安装
ClippyLint工具推荐rustup component add clippy
rustfmt格式化推荐rustup component add rustfmt
LLM APIAPI必需由Agent内置LLM提供

API Key 配置

  • 本 Skill 无需 API Key
  • 纯知识型工具,不涉及外部 API 调用

可用性分类

  • 分类: MD(纯 Markdown 指令)
  • 说明: 通过自然语言指令驱动 Agent 提供 Rust 开发优选实践建议
  • 限制: 免费版不包含 unsafe 安全审计、性能优化深度指导与企业级 CI/CD 集成

已知限制

  • 需LLM支持,无LLM环境不可用
  • 复杂业务场景建议结合人工经验判断
  • 执行效率受模型能力与网络环境影响
  • 当前为免费版本,如需完整功能请升级到付费版获取全部能力

案例展示

{
  "input": "示例输入",
  "output": "处理结果"
}

输出格式

处理结果以结构化格式返回, 包含状态码、消息和数据字段.

Related skills

轻量级服务监控工具免费版,面向个人开发者与小型项目。核心能力:. 适用于需要monitor toolkit相关能力的开发场景,包含结构化的工作流程和可复用的模板,帮助用户快速完成任务并保持代码质量. 适用于需要monitor toolkit相关能力的开发场景,包含结构化的工作流程和配置指引. 该工具经过深度差异化处置,针对用户反馈和使用痛点进行了调优改进,提升了实用性和可操作性.

1 installs

自定义定期报告产出工具免费版,面向个人开发者与小型项目。核心能力: - 自定义报告配置与数据源 - 定时调度(每日/每周/每月) - 多格式输出(文本/Markdown/HTML) - 多渠道交付(聊天/文件/邮件) - 环境变量安全管控凭证 - 历史报告归档 适用场景: - 个人项目数据周报 - 收入/支出定期汇总 - GitHub 活动统计报告 差异化:免费版包含基础报告产出能力

1 installs

核心能力:,可自发提升工作效率. 适用于需要security toolkit相关能力的开发场景,包含结构化的工作流程和可复用的模板,帮助用户快速完成任务并保持代码质量. 适用于需要security toolkit相关能力的开发场景,包含结构化的工作流程和配置指引. 该工具经过深度差异化处置,针对用户反馈和使用痛点进行了调优改进,提升了实用性和可操作性.

1 installs

文档工具箱免费版是一款面向开发者的DOCX文档处置Skill,封装python-docx与LibreOffice渲染能力,包含从读取、创建到编辑的完整基础工作流。核心能力:. 适用于需要doc toolkit相关能力的开发场景,包含结构化的工作流程和可复用的模板,帮助用户快速完成任务并保持代码质量.

1 installs

面向个人用户的干净可移植 Markdown 产出工具。核心能力:. 适用于需要markdown toolkit相关能力的开发场景,包含结构化的工作流程和可复用的模板,帮助用户快速完成任务并保持代码质量. 适用于需要markdown toolkit相关能力的开发场景,包含结构化的工作流程和配置指引. 该工具经过深度差异化处置,针对用户反馈和使用痛点进行了调优改进,提升了实用性和可操作性.

1 installs

CSS 工具箱免费版是一份面向前端开发者的 CSS 常见陷阱速查手册,聚焦层叠上下文、Flexbox/Grid 布局陷阱、现代选择器与响应式设计基础。Use,可自发提升工作效率 when 需要代码产出、编程辅助、调试测试、开发部署时使用。不适用于无明确技术栈的模糊需求。Use when 需要代码产出、编程辅助、调试测试、开发部署时使用。不适用于无明确技术栈的模糊需求. 功能涵盖: toolkit。