diff --git a/CONTRIBUTORS.svg b/CONTRIBUTORS.svg
index f7345966..94128974 100644
--- a/CONTRIBUTORS.svg
+++ b/CONTRIBUTORS.svg
@@ -14,21 +14,23 @@
参考:https://github.com/vadimcn/vscode-lldb/blob/master/MANUAL.md#source-path-remapping
-下载 CodeLLDB,选择 rust 自动生成 launch.json 文件
-{
+配置参考。下载 CodeLLDB,选择 rust 自动生成 launch.json 文件
+{
"configurations": [
- // 添加一下行,使 vec、hashmap 等类型显示正常
+ // 添加一下行,使 vec/hashmap 等类型显示正常
"sourceLanguages": ["rust"]
]
}
+
将编译文件与标准库的位置进行映射
-{
+{
"lldb.launch.sourceMap": {
// 你自己的映射 hash 和映射路径
"/rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f": "/Users/feiwu/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust"
}
}
+
fn main() {
println!("Hello, World!");
@@ -500,7 +501,7 @@
- :- len()
返回 vec
的长度 is_empty()
vec
是否为空push(value)
在 vec
尾部插入元素 pop()
删除并返回 vec
尾部的元素或者返回 None
insert(index,element)
在指定索引处插入元素 remove(index)
删除指定索引处的元素并返回被删除的元素,索引越界将 panic 报错退出 clear()
清空 vec
append(vec)
将另一个 vec
中的所有元素追加移入 vec
中,移动的 vec
变为空 truncate(len)
将 vec
截断到指定长度,多余的元素被删除 retain(f)
根据给定的函数,保留满足条件的元素 drain(range)
删除 vec
中指定范围的元素,同时返回一个迭代该范围所有元素的迭代器 split_off(index)
切分 vec
,索引左边的元素保留在原 vec
中(含索引),索引右边的元素(不含索引)在返回的 vec
中
enum IpAddrKind {
+enum IpAddrKind {
V4,
V6,
}
@@ -516,8 +517,9 @@
};
}
+
enum IpAddrKind {
+enum IpAddrKind {
V4(u8, u8, u8, u8),
V6(String),
}
@@ -527,8 +529,9 @@
let loopback = IpAddrKind::V6(String::from("::1"));
}
+
-enum Message{
+enum Message{
Quit,
Move {x:i32, y:i32},
Write(String),
@@ -541,8 +544,9 @@
let c = Message::ChangeColor(10, 20, 30);
}
+
#[derive(Debug)]
+#[derive(Debug)]
enum Grade {
A,
B,
@@ -564,6 +568,7 @@
subject_grade(Subject::Math(Grade::A));
}
+
match 模式匹配,使用 a | b
表示匹配 a 或 b,使用 _
,表示匹配剩余所有选项
fn main(){
- let grade = Grade::A;
- match grade {
- Grade::A => println!("Good"),
- Grade::B => println!("Not bad"),
- Grade::C | Grade::D => println!("Come on"),
- _ => println!("emmm"),
- }
+fn main(){
+ let grade = Grade::A;
+ match grade {
+ Grade::A => println!("Good"),
+ Grade::B => println!("Not bad"),
+ Grade::C | Grade::D => println!("Come on"),
+ _ => println!("emmm"),
+ }
}
enum Grade {
@@ -866,19 +871,22 @@
F,
}
+
matches!
宏
它可以将一个表达式跟模式进行匹配,然后返回匹配的结果 true
或 false
-assert!(matches!('x' ',A'..='Z' | 'a'..='z'));
+assert!(matches!('x' ',A'..='Z' | 'a'..='z'));
assert!(matches!(Some(101), Some(x) if x > 100));
+
match 表达式需要匹配所有的枚举才能结束,但通常我们只需要匹配我们需要的值
-let x = 3;
+let x = 3;
match Some(x) {
- Some(3) => println!("I guess that x is 3"),
- _ => ()
+ Some(3) => println!("I guess that x is 3"),
+ _ => ()
}
+
使用 if let
let x = 3;
if let Some(3) = Some(x) {
@@ -898,8 +906,9 @@
for (i, v) in collection.iter().enumerate(){}
+for (i, v) in collection.iter().enumerate(){}
+
letlet (x, _, y) = (1, 2, 3);
println!("{x},{y}");
@@ -916,7 +925,7 @@
..
忽略剩余参数struct Point {
+struct Point {
x: i32,
y: i32,
z: i32,
@@ -928,8 +937,9 @@
Point { x, .. } => println!("x is {}", x),
}
+
_
忽略部分参数
- 使用 let hello = ('h', 'e', 'l', 'l', 'o');
+let hello = ('h', 'e', 'l', 'l', 'o');
match hello {
(h, _, _, l, o) => {
@@ -937,6 +947,7 @@
},
}
+
以下代码,只要给定的 x 是 Some 类型,但 Some 中的值不是 1,都会匹配到 y
let x = Some(10);
@@ -949,14 +960,15 @@
@
绑定@
运算符允许为一个字段绑定另外一个变量。
let grade = 'A';
+let grade = 'A';
match grade {
good @ 'A'..='C' => println!("your grade is {}", good),
_ => println!("Come on"),
}
+
-#[derive(Debug)]
+#[derive(Debug)]
struct Point {
x: i32,
y: i32,
@@ -967,6 +979,7 @@
println!("{:?}", p);
}
+
如果使用 |
,需要使用 ()
,进行多个模式的绑定
match 1 {
@@ -977,13 +990,14 @@
}
let x = Some(2);
+let x = Some(2);
match x {
Some(1) => println!("x = 1"),
Some(y) if y == 2 => println!("y = {:?}", y),
_ => println!("No match"),
}// y = 2
+
rust 的函数使用蛇形命名法(snake case)
diff --git a/index.html b/index.html index 62444cb9..35a4afa7 100644 --- a/index.html +++ b/index.html @@ -454,9 +454,6 @@