rust筆記8 collections基礎

2021-09-26 12:00:02 字數 2157 閱讀 4466

具體細節在**中,注意引用的技巧,一般使用get()獲取元素,這樣如果越過邊界,返回的是none

fn main() 

for i in &v ", i);

}let mut v1 = vec![1, 2, 3, 4, 5];

for i in &mut v1

for i in &v1 ", i);

}// 通過列舉繫結的形式,可以讓乙個vec儲存多個型別的值,使用match的方式獲取

enum cell

let mut rows: vec= vec::new();

rows.push(cell::int(10));

rows.push(cell::float(1.35));

rows.push(cell::text(string::from("hello world !")));

for i in & rows ", val),

cell::float(val) => println!("{}", val),

cell::text(val) => println!("{}", val),}}

}

注意乙個易錯點,vec當元素不夠的時候,會重新申請記憶體,然後把之前的元素複製到新記憶體中;這樣,如果之前有引用指向某個元素,那麼會報錯。錯誤**例項:

fn main() ", r);

}

fn main() ", s7);  

let s4 = "hello".to_string(); // 重新定義s4

let s8 = format!("{} {} {}", s4, s5, s6); // format拼接,都是有效的

println!("s8 = {}", s8);

}

字串不能基於下標遍歷,因為不同字元的編碼是不一樣的,rust直接在語言層面就禁止了。遍歷只能通過for迴圈的形式進行,**例項:

fn main() ", c);

}for c in s.bytes() ", c);

}}

這裡僅僅介紹hashmap的結構,基於雜湊演算法的。先給出幾個基本的操作:

use std::collections::hashmap;

fn main() , value = {}", k, v);

}// 基於get獲取元素

let v = nums.get(&1);

match v ", val),

none => println!("no key !"),

}}

注意hashmap所有權的問題,一旦乙個元素insert進入容器,那麼對應的所有權就歸容器所有了

還有乙個基於veccollect方法的構造方式,在這裡給出乙個**例項:

use std::collections::hashmap;

let teams = vec![string::from("blue"), string::from("yellow")];

let initial_scores = vec![10, 50];

let scores: hashmap<_, _> = teams.iter().zip(initial_scores.iter()).collect();

試探性插入,如果元素存在則不插入,給出**例項:

use std::collections::hashmap;

let mut scores = hashmap::new();

scores.insert(string::from("blue"), 10);

scores.entry(string::from("yellow")).or_insert(50);

scores.entry(string::from("blue")).or_insert(50);

println!("", scores);

Rust學習筆記

toc rust學習筆記 初步閱讀rust的 以學習rust語言 match 採用表示式的形式,然後根據它的值來分支。分支的每個 臂 都是 val expression 的形式。當值匹配時,這個臂的表示式將被執行實現。之所以稱之為 match 是因為 模式匹配 的術語,而這種正是 match 實現的...

Rust 巨集筆記

rust 巨集筆記 這篇文章說的是?rust 的巨集。宣告巨集 declarative macro 和過程巨集 procedural macro 前者指的是用某種語法直接宣告出的巨集。後者是對應直接生成抽象語法樹的過程的巨集。直覺上過程巨集更隱式,更全能 宣告巨集更可讀,更直接。如何定義宣告巨集?現...

rust整理筆記 rust基本操作 01

1.安裝 1.1 rust mac安裝 curl ssf shsource home cargo env1.2.顯示rustc版本 rustc version 注 如果顯示版本號 提交的 hash 值和提交時間,恭喜你!則 rust 已成功安裝!1.3.顯示cargo cargo version如果...