具體細節在**中,注意引用的技巧,一般使用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進入容器,那麼對應的所有權就歸容器所有了
還有乙個基於vec
的collect
方法的構造方式,在這裡給出乙個**例項:
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如果...