Codes in lesson15
Package & Crate定义和作用
package 是包含一个或多个 crate 的集合:由 Cargo.toml 文件定义
项目组织单位:对应于文件系统中的一个目录- 依赖管理:通过 Cargo.toml 管理外部 crate 依赖- 构建管理:Cargo 根据包定义构建所有 crate
关键规则
一个...
Codes in lesson14
Option 返回值12345let mut s = String::from("A");let p1 = s.pop();dbg!(p1); // Some('A')let p2 = s.pop();dbg!(p2); // None
解构 Option1234enum Option<T> {...
Codes in lesson13
Rust 中的常见集合有 Vector 和 HashMap
Vector什么是 VecVec 是一个动态数组,可以根据需要动态增长和缩小,适用于需要按顺序存储数据的场景
Vec 的基本操作创建和初始化12let v: Vec<i32> = Vec::new();let v = vec![1, 2, 3];
添加元素12// let mut v...
Codes in lesson12
概述模式匹配可以检查数据的结构并进行相应操作,提高代码的可读性和简洁性、减少错误,尤其是在处理复杂数据结构时
基础模式匹配match 表达式基本用法:match 语句可以用于模式匹配数字、字符串、枚举等
1234567let number = 13;match number { 1 => println!("One!&quo...
Codes in lesson11
普通结构体定义结构体
结构体的定义的位置没有要求,实例化的作用域在定义的范围内即可
大括号中,定义每一部分数据的名字和类型,称为字段(field)
123456struct User { active: bool, username: String, email: String, sign_in_count: u64,&...
Codes in lesson10
不同语言 enum 对比typescript1234567enum Direction { North, East, South, West}let dir: Direction = Direction.North;
c++123456789enum Direction { North, ...
Codes in lesson9
字符串的定义字符串是由字符组成的连续集合
Rust 中的字符是 Unicode 类型,因此每个字符占据 4 字节内存空间,但字符串是 UTF-8 编码,也就是字符串中的字符所占的字节数是变化的(1~4)
比如,对于“hello 中国”来说,utf8 编码为:
12h e l l o _ 中 国[104 101 1...
Codes in lesson8
数组介绍[T; N] 表示 N 个值的数组,每个值的类型为 T。数组的大小是在编译期就已确定的常量,并且是类型的一部分,不能追加新元素或缩小数组
任意一种类型的值 v,表达式 v.len() 会给出 v 中的元素数,v[i] 引用的是 v 的第 i 个元素(i 的类型必须是 usize)。Rust 会检查 i 是否在 0~v.len()-1 的范围内,如果没...
Codes in lesson7
引用的分类
不可变引用(Immutable Reference)
可以读取数据,但不能修改
一个变量可以有多个不可变引用,但不能与可变引用共存
可变引用(Mutable Reference)
可以读取和修改数据
一个变量在某一时刻只能有一个可变引用,且不能与不可变引用共存
借用的规则
同一时间内,一个变量只能有一个可变引用或多个不可变引用
引用必须...
Codes in lesson6
内存回收Rust 的设计目的是确保内存安全并防止数据竞争,而不依赖垃圾回收器,这种内存安全性主要通过所有权(ownership)来实现
主流编程语言的内存回收机制:
静态语言
在编译时对变量类型进行检查和确认
C, C++, Rust
动态语言
在运行时进行类型检查和确认
Javascript, Python
特性
静态语言
动态语言
...