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
特性
静态语言
动态语言
...
Codes in lesson5
整型根据数据大小和有无符号对整数进行分类:
大小
有符号
无符号
8位
i8
u8
16位
i16
u16
32位
i32
u32
64位
i64
u64
128位
i128
u128
视架构而定
isize
usize
整型字面量可以用下表的形式书写
数字字面量
示例
十进制
98_222
十六进制
0x...
Codes in lesson4
条件控制if 表达式Rust 不会自动将非布尔值转换为布尔值,必须显式使用布尔值作为 if 的条件
使用 else if 处理多重条件只会执行第一个条件为 true 的代码块
在 let 语句中使用 if声明的变量将会绑定到表示 if 表达式结果的值上
if 的每个分支可能的返回值必须是相同类型
代码块的值是其最后一个表达式的值,即不需要分号
循环Rus...
Codes in lesson3
函数组成
声明函数的关键字 fn
函数名 add()
参数 i 和 j和参数类型i32
返回值类型i32
函数体i + j
注意:函数可以在任意位置定义
函数名开头是字符/下划线,后面是数字,下划线,字母(不能仅有下划线)
函数名和变量名使用蛇形命名法(snake case),如:fn add_two() -> {}
...
Codes in lesson2
一、可变 & 不可变变量(Mutable & Immutable)Rust 的变量默认不可改变(immutable),如果想改变,需要声明可变变量(mutable)
1、声明不可变变量1let x = 5;
2、声明可变变量12let mut x = 5;x = 6;
二、常量(Constants)Rust 中用 const 关键字定义一...