整數(shù)型
位長(zhǎng)度 | 有符號(hào) | 無(wú)符號(hào) |
---|---|---|
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32 | u32 |
64-bit | i64 | u64 |
128-bit | i128 | u128 |
arch | isize | usize |
isize和usize是當(dāng)前操作系統(tǒng)處理數(shù)據(jù)的位長(zhǎng)度大小,取決于所運(yùn)行的目標(biāo)平臺(tái)
浮點(diǎn)數(shù)型
rust中支持32位浮點(diǎn)數(shù)(f32),和64位浮點(diǎn)數(shù)(f64)熬尺,現(xiàn)代計(jì)算機(jī)中對(duì)于兩種浮點(diǎn)數(shù)的處理速度相近烦粒,但64位浮點(diǎn)數(shù)精度更高
rust中不支持++和--操作
布爾型
- rust中布爾型用bool表示遭庶,值只能是true或false
字符(串)型
- 字符型用char表示
- 字符串用String表示拐云,標(biāo)識(shí)可變長(zhǎng)度的文本數(shù)據(jù)
- rust中char類型大小為4字節(jié)(32bit)颤殴,支持中文杭跪、日韓文字符等非英文字符通惫,支持表情符號(hào)和零寬度空格茂翔,這些在rust中都是合法的char值
- 中文編碼有GBK和UTF-8兩種,編程時(shí)最好都是用UTF-8履腋,避免編譯報(bào)錯(cuò)
復(fù)合類型
元組
- rust中元組是用一對(duì)“()”包裹的數(shù)據(jù)珊燎,其中的數(shù)據(jù)項(xiàng)可以是不同的數(shù)據(jù)類型
- rust中元組數(shù)據(jù)支持解構(gòu)
let tup: (i32, f64, char) = (500, 23.125, 'rust');
let (x, y, z) = tup;
數(shù)組
- rust中數(shù)組是用一對(duì)“[]”包裹的數(shù)據(jù),其中的數(shù)據(jù)項(xiàng)必須是同類型的
- 對(duì)于數(shù)組中的元素遵湖,如果需要進(jìn)行修改時(shí)悔政,在聲明數(shù)組時(shí)也需要將數(shù)組聲明為一個(gè)可變變量
- 定義數(shù)組時(shí)聲明類型時(shí)使用[]進(jìn)行聲明,其中使用冒號(hào)(;)進(jìn)行分割延旧,第一項(xiàng)時(shí)數(shù)組中數(shù)據(jù)的類型谋国,第二項(xiàng)時(shí)數(shù)組的長(zhǎng)度
- 如果需要在數(shù)組中存放不同類型的數(shù)據(jù)可以使用rust中的枚舉類/元組/結(jié)構(gòu)體等實(shí)現(xiàn)
let a = [1, 2, 3, 4, 5];
// a 是一個(gè)長(zhǎng)度為 5 的整型數(shù)組
let b = ["January", "February", "March"];
// b 是一個(gè)長(zhǎng)度為 3 的字符串?dāng)?shù)組
let c: [i32; 5] = [1, 2, 3, 4, 5];
// c 是一個(gè)長(zhǎng)度為 5 的 i32 數(shù)組
let d = [3; 5];
// 等同于 let d = [3, 3, 3, 3, 3];
let first = a[0];
let second = a[1];
// 數(shù)組訪問(wèn)
a[0] = 123; // 錯(cuò)誤:數(shù)組 a 不可變
let mut a = [1, 2, 3];
a[0] = 4; // 正確
// 枚舉實(shí)現(xiàn)多類型數(shù)組
enum Data {
Int(i32),
Float(f64),
String(String),
// ... 其他類型
}
fn main() {
let data_array: [Data; 3] = [Data::Int(1), Data::Float(3.14), Data::String("Hello".to_string())];
}
// 元組實(shí)現(xiàn)多類型數(shù)組
fn main() {
let data_array: [(i32, f64, String); 3] = [
(1, 3.14, "One".to_string()),
(2, 2.71, "Two".to_string()),
(3, 1.61, "Three".to_string()),
];
}
// 使用結(jié)構(gòu)體實(shí)現(xiàn)多類型數(shù)組
enum Value {
Int(i32),
Float(f64),
String(String),
// ... 其他類型
}
struct Data {
value: Value
}
// 然后你可以像這樣使用它:
let data_array: [Data; 3] = [
Data { value: Value::Int(1) },
Data { value: Value::Float(3.14) },
Data { value: Value::String("Hello".to_string()) },
];