阶段一:入门(理解 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;
        }
    }
}
相关推荐
用户214118326360212 分钟前
dify案例分享-免费玩转 AI 绘图!Dify 整合 Qwen-Image,文生图 图生图一步到位
前端
IT_陈寒22 分钟前
Redis 性能翻倍的 7 个冷门技巧,第 5 个大多数人都不知道!
前端·人工智能·后端
mCell7 小时前
GSAP ScrollTrigger 详解
前端·javascript·动效
gnip7 小时前
Node.js 子进程:child_process
前端·javascript
excel10 小时前
为什么在 Three.js 中平面能产生“起伏效果”?
前端
excel11 小时前
Node.js 断言与测试框架示例对比
前端
天蓝色的鱼鱼13 小时前
前端开发者的组件设计之痛:为什么我的组件总是难以维护?
前端·react.js
codingandsleeping13 小时前
使用orval自动拉取swagger文档并生成ts接口
前端·javascript
石金龙14 小时前
[译] Composition in CSS
前端·css
白水清风14 小时前
微前端学习记录(qiankun、wujie、micro-app)
前端·javascript·前端工程化