Rust 原生类型
- Rust std 文档中关于 Primitive Types 的部分:https://doc.rust-lang.org/std/index.html#primitives
- Rust 程序设计语言 Data types 部分: https://doc.rust-lang.org/book/ch03-02-data-types.html
Rust 原生类型
Rust 的原生类型(primitive)分两种:标量类型(scalar type)和复合类型(compound type)
标量类型
分类 | 类型 | 特殊/说明 | 字面量 |
---|---|---|---|
有符号整型 | i8、i16、i32、i64 | isize (指针宽度) |
-16 |
无符号整型 | u8、u16、u32、u64 | usize (指针宽度) |
123 |
浮点型 | f32、f64 | 3.14 |
|
字符 | char | Unicode,一个 char 占4 字节 | 'A' |
布尔型 | true、false | true |
|
单元类型(unit type) | 一个空的元组:() |
单元类型的值是个元组,但不包含多个值,所以不是复合类型 | () |
复合类型
类型 | 字面量 | 说明 |
---|---|---|
数组(array) | [1, 2, 3] |
编译时确定固定类型、大小 |
元组(tuple) | (1, 0.2, true) |
有限、可异类型的序列 |
切片(slice) | 动态大小的序列视图 | |
字符串(str) | "abc" |
字符串切片 |
变量定义
用 let 名 = 值;
来声明变量,可以在变量名后加 :类型
来指定类型:
let floatval: f64 = 1.0;
不写类型说明就自动推断:
let autoint = 12;
字面值可以通过后缀指定类型:
let intval = 5i32;
Rust 还可以通过下文来推断:
let mut autoi64 = 12; // 根据下一行的赋值推断为 i64 类型
autoi64 = 4294967296i64;
用 let mut
来声明可变变量,mut 的变量值可在后面改变,但类型不能变。
注:变量可以被遮蔽(shadow)掉,遮蔽就可以变类型了:
let mut mutable = 12;
let mutable = true; // shadow
(这章重点是类型,不是变量,关于变量后面还会详细学习)
字面量与运算符
整数的字面量还可以加前缀来写二、八、十六进制:0b1010
,0o34
,0x12AB
。
还可以加下划线方便阅读:1_000_000 == 1000000
,0.000_001 == 0.000001
。
Rust 的运算符和 C 类似。包括:
- 短路求值的逻辑运算:与
&&
、或||
、非!
。 - 位运算:位与
&
,位或|