阶段一:入门(理解 Rust 的基本概念)

1. 安装与工具链

  1. 安装 Rust:
arduino 复制代码
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup update
  1. 工具介绍:
  • rustc main.rs 编译单个 Rust 文件
  • cargo new project_name 创建项目
  • cargo build 构建项目
  • cargo run 构建并运行
  • cargo check 仅检查语法,不编译
  1. 配置 IDE:
  • VS Code + rust-analyzer 插件
  • IntelliJ + Rust 插件

2. Rust 基础语法

变量与可变性

ini 复制代码
fn main() {
    let x = 5;      // 不可变变量
    let mut y = 10; // 可变变量
    y += 5;
    println!("x = {}, y = {}", x, y);
}

基本数据类型

ini 复制代码
let a: i32 = 10;        // 整数
let b: f64 = 3.14;      // 浮点数
let c: bool = true;     // 布尔
let d: char = 'R';      // 字符

字符串类型

rust 复制代码
let s1: &str = "hello";       // 字符串切片
let s2: String = String::from("world"); // 可变字符串

常量与静态变量

ini 复制代码
const PI: f64 = 3.14159;
static mut COUNTER: i32 = 0;

3. 控制流

if / else

ini 复制代码
let n = 10;
if n % 2 == 0 {
    println!("偶数");
} else {
    println!("奇数");
}

loop / while / for

rust 复制代码
let mut i = 0;
while i < 5 {
    println!("{}", i);
    i += 1;
}

for j in 0..5 {
    println!("{}", j);
}

loop {
    println!("无限循环");
    break;
}

match 模式匹配

ini 复制代码
let number = 3;
match number {
    1 => println!("一"),
    2 => println!("二"),
    3 => println!("三"),
    _ => println!("其他"),
}

4. 函数和作用域

rust 复制代码
fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn main() {
    let result = add(5, 10);
    println!("5 + 10 = {}", result);
}
  • 变量作用域:在函数或块外部不可访问内部变量
  • 生命周期初探:变量在离开作用域时被释放

5. 简单练习

  1. 计算 Fibonacci 数列
rust 复制代码
fn fibonacci(n: u32) -> u32 {
    if n == 0 { 0 } 
    else if n == 1 { 1 } 
    else { fibonacci(n-1) + fibonacci(n-2) }
}

fn main() {
    for i in 0..10 {
        println!("Fibonacci({}) = {}", i, fibonacci(i));
    }
}
  1. 判断素数
rust 复制代码
fn is_prime(n: u32) -> bool {
    if n <= 1 { return false; }
    for i in 2..n {
        if n % i == 0 {
            return false;
        }
    }
    true
}

fn main() {
    let num = 17;
    println!("{} 是素数吗? {}", num, is_prime(num));
}
  1. 简单猜数字游戏
rust 复制代码
use std::io;
use rand::Rng;

fn main() {
    let secret = rand::thread_rng().gen_range(1..=100);
    println!("猜一个 1 到 100 的数字:");

    loop {
        let mut guess = String::new();
        io::stdin().read_line(&mut guess).expect("读取失败");
        let guess: u32 = guess.trim().parse().expect("请输入数字");

        if guess < secret {
            println!("太小了!");
        } else if guess > secret {
            println!("太大了!");
        } else {
            println!("猜对了!");
            break;
        }
    }
}
相关推荐
weixin_3823952338 分钟前
为小工厂量身打造:本地部署的物料管理系统带缺料计算
前端·制造
__zRainy__44 分钟前
解决pnpm v10+不自动构建
前端·pnpm·工程化
猫猫不是喵喵.1 小时前
Vue3 Props 属性
前端·javascript·vue.js
醉城夜风~2 小时前
CSS元素显示模式(display)
前端·css
AI大模型-小华3 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
花褪残红青杏小3 小时前
Rust图像处理第24节- 噪声模型 + 中心极限定理:椒盐噪声 + CLT 可视化
rust·webassembly·图形学
做前端的娜娜子5 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
爱吃牛肉的大老虎5 小时前
Rust对象之结构体,枚举,特性
开发语言·后端·rust
小帅不太帅5 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek