From 0726f4c85ee42f20ce54ee0265143958d8c99923 Mon Sep 17 00:00:00 2001 From: sunface Date: Tue, 21 Feb 2023 09:32:01 +0800 Subject: [PATCH] update println style in Vectory chapter, add simple explanation for why use two different styles --- dump.rdb | Bin 785 -> 0 bytes src/basic/collections/vector.md | 9 ++++++--- 2 files changed, 6 insertions(+), 3 deletions(-) delete mode 100644 dump.rdb diff --git a/dump.rdb b/dump.rdb deleted file mode 100644 index 69d9d9db14039baec54ef2c38bf7aa149d75f87d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 785 zcma))Pe>F|9LL}8w(4r8nP`{j=XeR+nSDF6JG+kknbnLeD04R<32dBwyE{1h-ZJxM zZ57c|r=&WV1O*=IB3-%(5s2Ljx^-JBkRa&3Nj0kwL6@#S_asw7Klqy2C&XK{B&Z-h;5mC5eVwQpvl&2vd!ER*u?s@{znM-5gGD-JQr zb2iyQKhck1aR2Pe@$9_-LMWn$DXgfeWa4e+!{}h&l3?WpP53hvq5`i~h~5M3Eq<>< zjk12M#r0^xFbVXAsAbM?_M&VZ^@feA!3_u0))MCxSBu3~yIWnUXz`Lar(f z$ze)7I1xn=3 z(~hsNAMHJP^JV+--uitQMg_2fS!)q)^vhA9!Ys;NK}%yC6>L%^wxA_J+vyL8ap*^U z^CXHx`w^pP`>RGy3!k1n|GxcT%5yo~_Ar)JxRR9sMhTdnW3iCuLKIfJC~&6+lq>)* zS+wZFKnINZPvy)3Rsj8caEwZ@9`B zS_{m!*#dFk6l?`6%+)^z;>y5EfVy?m7xGb?I-q5kXfs@%C4^=;ygwmhSrM@;#+4jS zX^DiUq-S6QnfgmaM#BI-vWQb6R&#h*Qxck-m=Tuug;&z81Jq}VB{u66ok^QcPm)}M zrg8da2~V5TSC#9 println!("第三个元素是 {}", third), + Some(third) => println!("第三个元素是 {third}"), None => println!("去你的第三个元素,根本没有!"), } ``` 和其它语言一样,集合类型的索引下标都是从 `0` 开始,`&v[2]` 表示借用 `v` 中的第三个元素,最终会获得该元素的引用。而 `v.get(2)` 也是访问第三个元素,但是有所不同的是,它返回了 `Option<&T>`,因此还需要额外的 `match` 来匹配解构出具体的值。 +> 细心的同学会注意到这里使用了两种格式化输出的方式,其中第一种我们在之前已经见过,而第二种是后续新版本中引入的写法,也是更推荐的用法,具体介绍请参见[格式化输出章节](https://course.rs/basic/formatted-output.html) + + ### 下标索引与 `.get` 的区别 这两种方式都能成功的读取到指定的数组元素,既然如此为什么会存在两种方法?何况 `.get` 还会增加使用复杂度,这就涉及到数组越界的问题了,让我们通过示例说明: @@ -113,7 +116,7 @@ let first = &v[0]; v.push(6); -println!("The first element is: {}", first); +println!("The first element is: {first}"); ``` 先不运行,来推断下结果,首先 `first = &v[0]` 进行了不可变借用,`v.push` 进行了可变借用,如果 `first` 在 `v.push` 之后不再使用,那么该段代码可以成功编译(原因见[引用的作用域](https://course.rs/basic/ownership/borrowing.html#可变引用与不可变引用不能同时存在))。 @@ -154,7 +157,7 @@ error: could not compile `collections` due to previous error ```rust let v = vec![1, 2, 3]; for i in &v { - println!("{}", i); + println!("{i}"); } ```