rust通用编程概念
本文采用知识共享署名 4.0 国际许可协议进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,可适当缩放并在引用处附上图片所在的文章链接。
关键字
as
- 强制类型转换,消除特定包含项的 trait 的歧义,或者对use
和extern crate
语句中的项重命名async
- 返回一个Future
而不是阻塞当前线程await
- 暂停执行,直到Future
的结果准备好break
- 立刻退出循环const
- 定义常量或不变裸指针(constant raw pointer)continue
- 继续进入下一次循环迭代crate
- 链接(link)一个外部 crate 或一个代表宏定义的 crate 的宏变量dyn
- 动态分发 trait 对象else
- 作为if
和if let
控制流结构的 fallbackenum
- 定义一个枚举extern
- 链接一个外部 crate 、函数或变量false
- 布尔字面量false
fn
- 定义一个函数或 函数指针类型 (function pointer type)for
- 遍历一个迭代器或实现一个 trait 或者指定一个更高级的生命周期if
- 基于条件表达式的结果分支impl
- 实现自有或 trait 功能in
-for
循环语法的一部分let
- 绑定一个变量loop
- 无条件循环match
- 模式匹配mod
- 定义一个模块move
- 使闭包获取其所捕获项的所有权mut
- 表示引用、裸指针或模式绑定的可变性pub
- 表示结构体字段、impl
块或模块的公有可见性ref
- 通过引用绑定return
- 从函数中返回Self
- 实现 trait 的类型的类型别名self
- 表示方法本身或当前模块static
- 表示全局变量或在整个程序执行期间保持其生命周期struct
- 定义一个结构体super
- 表示当前模块的父模块trait
- 定义一个 traittrue
- 布尔字面量true
type
- 定义一个类型别名或关联类型unsafe
- 表示不安全的代码、函数、trait 或实现use
- 引入外部空间的符号where
- 表示一个约束类型的从句while
- 基于一个表达式的结果判断是否进行循环
变量和可变性
immutable & immutable
不可变的(immutable),可变的(immutable)。
常量
常量(constant)是绑定到一个常量名且不允许更改的值。
|
|
遮蔽
遮蔽(shadow):以声明和前面变量具有相同名称的新变量,这意味着当我们使用变量时我们看到的会是第二个变量的值。
mut
和遮蔽之间的另一个区别是,因为我们在再次使用 let
关键字时有效地创建了一个新的变量,所以我们可以改变值的类型,但重复使用相同的名称。
数据类型
Rust 是一种静态类型(statically typed)的语言,这意味着它必须在编译期知道所有变量的类型。
|
|
标量类型
标量(scalar)类型表示单个值。Rust 有 4 个基本的标量类型:整型、浮点型、布尔型和字符。
- 整型
长度 | 有符号类型 | 无符号类型 |
---|---|---|
8 位 | i8 |
u8 |
16 位 | i16 |
u16 |
32 位 | i32 |
u32 |
64 位 | i64 |
u64 |
128 位 | i128 |
u128 |
arch | isize |
usize |
- 整型字面量
数字字面量 | 示例 |
---|---|
十进制 | 98_222 |
十六进制 | 0xff |
八进制 | 0o77 |
二进制 | 0b1111_0000 |
字节 (仅限于 u8 ) |
b'A' |
-
浮点型
Rust 的浮点型是
f32
和f64
,它们的大小分别为 32 位和 64 位。默认浮点类型是f64
,因为在现代的 CPU 中它的速度与f32
的几乎相同,但精度更高。所有浮点型都是有符号的。 -
数字运算
Rust 的所有数字类型都支持基本数学运算:加法、减法、乘法、除法和取模运算。整数除法会向下取整。
-
bool
1
let f: bool = false;
-
char
1
let c = 'z';
复合类型
Rust 有两种基本的复合类型:元组(tuple)和数组(array)。
|
|
函数
Rust 中的函数定义以 fn
开始,后跟着函数名和一对圆括号。大括号告诉编译器函数体在哪里开始和结束。
- 参数
- 语句和表达式 语句(statement)是执行一些操作但不返回值的指令。表达式(expression)计算并产生一个值
- 带有返回值的函数
控制流
if
|
|
循环
Rust 有三种循环:loop
、while
和 for
。
-
loop
loop
关键字告诉 Rust 一遍又一遍地执行一段代码直到你明确要求停止。
|
|
从循环返回
-
while
在程序中计算循环的条件也很常见。当条件为真,执行循环。当条件不再为真,调用
break
停止循环。这个循环类型可以通过组合loop
、if
、else
和break
来实现. -
for