在 rust 中, 数据类型有以下基础内容: 数值类型
- 数值类型与大部分语言不同, 需要区分具体的位数, 比如
i8与f32这样的. 字符串类型 - String 类型作为一个高级类型, 不支持使用下标访问具体的值. 这是由于 rust 使用 Unicode 编码, String 采用 UTF-8 进行编码, UTF-8 属于变长编码, 自然就不能支持下标访问.
- rust 除了使用反斜杠
\进行转义之, 还支持使用\x\u{}进行进阶的转换, 例如\x7f与\u{0065}分别转为等值的 ASCII 字符和 Unicode字符。 - rust 可以使用
r""或者r#""#来禁止字符串转义 - 字节串是
b""包裹起来的字符串,是一个字节静态数组 数组 - 静态数组要求长度固定并且要求提前说明, 例如
[i32:5] - 动态数组是 Vec 类型, 可以动态的扩大缩小, 例如
let v: Vec<i32> = Vec::new()哈希表 let mut x = HashMap::new();
复合类型可以包含多种基础类型, 是一种将类型进行有效组织的方式, 包含元, 结构体, 枚举等。
枚举与结构体不同, 结构体是里面所有的类型同时发挥作用, 而枚举是其中一个变体发挥作用来产生一个具体的实例。
枚举是一个载体, 可以携带任何类型
Rust 的 if else 并不需要括号来包裹表达式, 同时 if else 可以进行返回值, 例如:
Rust 中存在三种循环: loop, while, for。
loop 用于无条件的无限循环
while 与 if else 一样, 表达式不需要 () 进行包裹
for 一般用于迭代器遍历
rust 中函数的关键词是 fn, 类似 kotlin 那样参数类型后置, 需要注意的是参数所有权的转移和传递。
而闭包则是另外一种风格, 在代码中使用 || 来定义, 而不是 fn, 示例如下:
由于闭包写在某个函数中, 而非类内, 所以闭包可以捕获函数内的局部变量进行使用。
rust 中模块为 mod, 引入模块的方式是 mod module
在某个模块中, 可能存在固定文件名 mod.rs 作为模块入口, 类似于 python 的 init.py