Skip to content

Instantly share code, notes, and snippets.

@CarterTsai
Created April 12, 2020 16:41
Show Gist options
  • Save CarterTsai/d692ab7a4f6b2f15d1b11a42aa6f9ca9 to your computer and use it in GitHub Desktop.
Save CarterTsai/d692ab7a4f6b2f15d1b11a42aa6f9ca9 to your computer and use it in GitHub Desktop.
rust_vector
#![feature(vec_remove_item)]
fn main() {
// vector是一個重新調整size的array(類似c#裡面的list), 他的size在編譯時期
// 是不會知道。但他可以在任何時間增大或減少size, 然後vector只能儲存相同類型的值
// 建立vector的方式
println!("== 1. 建立vector的方式 ==");
let v = vec![1, 2, 3];
println!("v => {:?}", v);
let mut v1: Vec<i32> = Vec::new();
println!("v1 => {:?}", v1);
// 增加新的資料
println!("== 2. 增加新的資料 ==");
v1.push(9);
v1.push(19);
v1.push(29);
println!("v1 => {:?}", v1);
// 讀取vector特定位置的資料
println!("3. 讀取vector特定位置的資料");
println!("v1[0] => {:?}", v1[0]);
println!("v1[1] => {:?}", v1[1]);
println!("v1[2] => {:?}", v1[2]);
// 使用for in來顯示所有資料
println!("== 4. 使用for in來顯示所有資料 ==");
for i in &v1 {
println!("{}", i);
}
// 使用for in來顯示所有資料並且改變每個vector中的資料
println!("5. 使用for in來顯示所有資料並且每個vector中的資料都加2");
// 正確作法
for i in &mut v1 {
*i += 2;
println!("{}", i);
}
// 錯誤做法
//for i in &v1 {
// *i += 2; <=== 會報錯 `i` is a `&` reference, so the data it refers to cannot be written
// println!("{}", i);
//}
// remove_item 必須使用#![feature(vec_remove_item)]
println!("== 6. remove_item, remove_item是針對內容去刪 不是index的位置 ==");
v1.remove_item(&11); // <= remove_item是針對內容去刪 不是index的位置
println!("{:?}", v1);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment