RUST笔记一(基础与变量)
RUST-基础与变量
第一章:基础入门与环境配置
🔧 核心概念:Cargo
Cargo 是 Rust 的构建系统和包管理器(类似 npm/pip)。
- 常用命令:
cargo new project_name:创建新项目cargo build:编译项目cargo run:编译并运行(日常开发最常用)cargo check:快速检查语法错误(不生成二进制文件,速度快)
📁 项目结构
Plaintext
1 | hello_cargo/ |
💻 VS Code 远程开发 (Remote-SSH) 🔥
推荐方案:直接在云服务器上开发。
- 扩展:安装
Remote - SSH。 - 连接:
Ctrl+Shift+P->Remote-SSH: Connect to Host...->ssh user@ip。 - 插件:在远程环境中安装
rust-analyzer扩展。
- 优点:环境一致,编译运行都在服务器,不占用本地资源。
第二章:变量与输入输出 (猜数字游戏)
🔣 变量声明与不可变性
Rust 设计理念:安全优先。
let x = 5;—— 不可变(Immutable),绑定后不能修改。let mut x = 5;—— 可变(Mutable),显式声明后可修改。
⌨️ 接收用户输入
Rust
1 | use std::io; |
&mut guess详解:&:引用(Reference),允许程序多次访问同一数据而无需拷贝。mut:可变。read_line需要修改字符串内容,必须传入可变引用。
.expect()处理结果:read_line返回Result类型(Ok或Err)。.expect()会在Err时引发程序崩溃(Panic)并打印信息。
📤 格式化打印
Rust 1.58+ 支持命名参数:
Rust
1 | let x = 5; |
第三章:数据类型与格式化
一、 标量类型 (Scalar Types)
| 位数 | 有符号 (i) | 无符号 (u) | 范围说明 |
|---|---|---|---|
| 8-bit | i8 |
u8 |
$0$ 到 $255$ (u8) |
| 32-bit | i32 |
u32 |
默认类型,性能最优 |
| arch | isize |
usize |
依赖机器架构,常用于数组索引 |
- 浮点型:
f32和f64(默认,精度高)。 - **字符型 (
char)**:占用 4 字节,支持 Unicode(Emoji、中文)。
二、 复合类型 (Compound Types)
- **元组 (Tuple)**:长度固定,类型可不同。
- 访问:
tup.0或let (x, y) = tup;
- 访问:
- 数组 (Array):长度固定,类型必须相同,分配在栈上。
- 定义:
let a: [i32; 5] = [1, 2, 3, 4, 5]; - 快捷初始化:
let b = [3; 5];//[3, 3, 3, 3, 3]
- 定义:
三、 核心避坑指南 ⚠️
- 引号使用:
'a'是字符 (char),"abc"是字符串 (&str)。 - 进阶打印占位符:
{:x}:十六进制{:b}:二进制{:?}:Debug 打印(用于打印元组、数组等复杂类型)
- 未使用变量:在变量名前加下划线(如
let _x = 5;)可消除警告。
第四章:变量进阶、常量与断言
一、 断言 (Assertions)
用于检查逻辑,失败时会触发 Panic。
| 宏 | 用途 | 示例 |
|---|---|---|
assert_eq!(a, b) |
断言相等 | assert_eq!(2, 1 + 1); |
assert_ne!(a, b) |
断言不等 | assert_ne!(5, 10); |
assert!(cond) |
断言为真 | assert!(x > 0); |
二、 常量 (Constants)
- 语法:
const MAX_POINTS: u32 = 100_000; - 特性:
- 必须使用
const。 - 必须显式标注类型。
- 全局有效,永远不可变(不可加
mut)。 - 命名约定:
SCREAMING_SNAKE_CASE。
- 必须使用
三、 变量遮蔽 (Shadowing)
允许声明同名新变量来覆盖旧变量。
Rust
1 | let x = 5; |
- 与
mut的区别:遮蔽通过let重新创建新变量,因此可以 改变类型;mut只能修改原值,类型必须保持一致。
四、 变量绑定基础
- 解构绑定:
let (a, mut b) = (1, 2);——a不可变,b可变。
💡 学习心得总结
- 安全为王:默认不可变、强制错误处理 (
Result) 是 Rust 的灵魂。 - 引用借用:
&借用和&mut可变借用解决了数据竞争问题。 - 开发工具:Cargo 的集成度极高,极大提升了工程效率。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 EIGHTJIU!
评论
