Rust Note(8)_Tuple Array Vector

數據集合類型


除了單一基本數據類型,接著就是數據集合類型。

Tuple 元組


用來儲存不一樣數據的類型,但其為不可改變。

ex : (i64, &str, f32, u64) : 需對應位置放入對應資料類型。

如需要在終端機輸出,則需要使用{:?}

1
2
3
4
5
6
fn main() {
let a: (i64, &str, f32) = (18, "Kylls", 0.76);
println!("{:?}", a);
}

// output : (18, "Kylls", 0.76)
  • 內容連續
  • 不同數據類型
  • 不可變更
  • 輸出需用 {:?}
  • 訪問元素位置直接使用 index , ex: a.0
  • 可當作 parameter 傳入 function
  • 可當 function 返回值

Array 陣列


用來儲存相同數據類型資料,為內存連續區塊。

ex: [i64; 3] : 此 Array 的長度為 3, 且內部元素數據類型為i64

1
2
3
4
5
6
fn main() {
let a: [i64; 3] = [18, 20, 12];
println!("{:?}", a);
}

// output : [18, 20, 12]
  • 內容連續
  • 同數據類型
  • 不可動態改變長度。
    • (如需改變則須做轉換,建議使用Vector可動態改變)
  • 可變更, 但數據類型須符合。
  • 輸出需用 {:?}
  • 訪問元素位置直接使用 index , ex: a.[1]
  • 可當作 parameter 傳入 function
  • 可當 function 返回值

Vector 向量陣列


用於儲存相同數據類型資料,為內存連續區塊。

  • 內容連續
  • 同數據類型
  • 可動態改變長度。
  • 可變更, 但數據類型須符合。
  • 輸出需用 {:?}
  • 訪問元素位置直接使用 index , ex: a.[1]
  • 可當作 parameter 傳入 function
  • 可當 function 返回值

使用 vec! 巨集方式建立向量

1
2
3
4
5
6
7
fn main() {
let mut a = vec![18, 20, 12];
a.push(33);
println!("{:?}", a);
}

// output : [18, 20, 12, 33]

使用 new 方式建立

1
2
3
4
5
6
7
8
fn main() {
let mut a = Vec::new();
a.push(1);
a.push(2);
println!("{:?}", a)
}

//output : [1, 2]

array 就類似 &str
vector 就類似 String

Rust Note_20211101_1.1