원클릭으로
rust-edition
Rust 版本指南技能。提供 Rust 版本(Edition)的完整参考,包括版本差异、迁移指南、新特性等。TRIGGER when: 用户需要了解 Rust 版本差异、迁移代码到新版本、或需要了解版本新特性时触发。SKIP: 非版本相关的 Rust 开发。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Rust 版本指南技能。提供 Rust 版本(Edition)的完整参考,包括版本差异、迁移指南、新特性等。TRIGGER when: 用户需要了解 Rust 版本差异、迁移代码到新版本、或需要了解版本新特性时触发。SKIP: 非版本相关的 Rust 开发。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Rust 高级特性技能。提供 Rust 高级特性的完整参考,包括 unsafe Rust、高级 trait、高级类型、宏、FFI 等。TRIGGER when: 用户使用 unsafe 代码、实现高级 trait、使用高级类型、编写宏、或需要了解 Rust 高级特性时触发。SKIP: 基础 Rust 开发。
Rust CLI 工具开发技能。提供使用 Rust 开发命令行工具的完整参考,包括参数解析、错误处理、输出格式化、跨平台支持等。TRIGGER when: 用户开发 Rust CLI 工具、使用 clap/structopt、处理命令行参数、格式化输出、或需要了解 Rust CLI 最佳实践时触发。SKIP: 非 CLI 工具的 Rust 开发。
Rust 嵌入式开发技能。提供使用 Rust 进行嵌入式开发的完整参考,包括 no_std 环境、HAL 层、外设驱动、中断处理、实时系统等。TRIGGER when: 用户开发嵌入式 Rust 程序、使用 cortex-m/esp-hal、配置 no_std 环境、处理硬件外设、或需要了解 Rust 嵌入式最佳实践时触发。SKIP: 非嵌入式 Rust 开发。
Rust 练习技能。提供 Rust 练习和学习资源的完整参考,包括 Rustlings、练习题、最佳实践等。TRIGGER when: 用户学习 Rust、需要练习题、或需要了解 Rust 学习资源时触发。SKIP: 非学习相关的 Rust 开发。
Rust 语言核心开发技能。提供 Rust 语言的完整参考,包括所有权、借用、生命周期、泛型、trait、错误处理、并发、异步等核心概念。TRIGGER when: 用户编写 Rust 代码、询问 Rust 语法、需要 Rust 代码示例、调试 Rust 程序、或需要了解 Rust 语言特性时触发。SKIP: 非 Rust 语言的开发任务。
Rust 宏技能。提供 Rust 宏的完整参考,包括声明宏、过程宏、宏规则等。TRIGGER when: 用户编写宏、使用宏、调试宏、或需要了解宏系统时触发。SKIP: 非宏相关的 Rust 开发。
| name | rust-edition |
| description | Rust 版本指南技能。提供 Rust 版本(Edition)的完整参考,包括版本差异、迁移指南、新特性等。TRIGGER when: 用户需要了解 Rust 版本差异、迁移代码到新版本、或需要了解版本新特性时触发。SKIP: 非版本相关的 Rust 开发。 |
本技能提供 Rust 版本(Edition)的完整参考,基于 Edition Guide。
当用户执行以下操作时触发此技能:
以下情况不触发此技能:
Rust 版本(Edition)是 Rust 的里程碑,每 3 年发布一次:
| 版本 | 发布年份 | 主要特性 |
|---|---|---|
| Rust 2015 | 2015 | 初始版本 |
| Rust 2018 | 2018 | 模块系统改进、async/await |
| Rust 2021 | 2021 | 闭包捕获改进、IntoIterator for arrays |
| Rust 2024 | 2024 | gen 关键字、let-else |
[package]
name = "my-project"
version = "0.1.0"
edition = "2021" # 指定版本
// 2015
mod foo {
mod bar {
fn baz() {}
}
}
// 2018
mod foo;
mod foo {
mod bar;
mod bar {
fn baz() {}
}
}
async fn fetch_data() -> String {
// 异步操作
String::from("data")
}
#[tokio::main]
async fn main() {
let data = fetch_data().await;
}
fn main() {
let mut data = vec![1, 2, 3];
let first = &data[0];
println!("{}", first);
data.push(4); // 2015 会报错,2018 可以
}
// 2015
use std::vec::Vec;
use std::collections::HashMap;
// 2018
use std::{vec::Vec, collections::HashMap};
use std::collections::{HashMap, HashSet};
// 2018
let mut map = HashMap::new();
let key = String::from("key");
let closure = || {
map.insert(key, 1); // 需要 move
};
// 2021
let mut map = HashMap::new();
let key = String::from("key");
let closure = || {
map.insert(key, 1); // 自动捕获需要的字段
};
// 2018
for i in [1, 2, 3].iter() {
println!("{}", i);
}
// 2021
for i in [1, 2, 3] {
println!("{}", i);
}
// 2021 prelude 包含
use std::prelude::rust_2021::*;
// 包含 TryFrom, TryInto, FromIterator
// 2018
panic!("hello {}", "world");
// 2021
panic!("hello {name}", name = "world");
// 生成器
let mut gen = gen {
yield 1;
yield 2;
yield 3;
};
// 异步生成器
let mut async_gen = async gen {
yield 1;
yield 2;
yield 3;
};
// 2021
let Some(value) = some_option else {
return;
};
// 2024
let Some(value) = some_option else {
return;
};
// value 在后续代码中可用
// 2024
match value {
Some(x) if x > 0 => println!("正数: {}", x),
Some(x) => println!("非正数: {}", x),
None => println!("无值"),
}
# 自动迁移
cargo fix --edition
# 检查迁移
cargo fix --edition --check
Cargo.toml 中的 editioncargo fix --edition