From 7885c33104b9cf90065eeea66c453467f0d03b50 Mon Sep 17 00:00:00 2001 From: Mintnoii Date: Thu, 20 Jan 2022 11:09:13 +0800 Subject: [PATCH 1/3] Update editor.md --- book/contents/first-try/editor.md | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/book/contents/first-try/editor.md b/book/contents/first-try/editor.md index 1f597852..90067bb5 100644 --- a/book/contents/first-try/editor.md +++ b/book/contents/first-try/editor.md @@ -1,19 +1,21 @@ -## 墙推VSCode! +## 墙推 VSCode! -`VSCode` 从15年刚开始推出,我就在使用了,做为第一个吃螃蟹的人,可以说见证了它一路的快速发展,直到现在它已经成为开源世界最火的 IDE 之一(弱弱的说一句,之一也许可以去掉)。 +`VSCode` 从 15 年刚开始推出,我就在使用了。做为第一个吃螃蟹的人,可以说见证了它一路的快速发展,直到现在它已经成为开源世界最火的 IDE 之一(弱弱的说一句,之一也许可以去掉)。 -顺便歪楼说一句:我预言过三件事, 在13年预言 `Golang` 会火遍全世界,同时创建了14-19年最火的 Golang 隐修会社区,可惜因为某些原因被封停了,甚是遗憾;在15年预言 `VSCode` 会成为世界上最好的 IDE;同时我还是 `jaeger tracing` 项目的第一个star用户(是的,比作者还早),当时就很看好这个项目的后续发展。 +顺便歪楼说一句:我预言过三件事: -现在呢,我在这里正式预言: **未来 `Rust` 会成为主流编程语言之一,在几乎所有开发领域都将大放光彩**,总之牛逼已吹下,希望不要被打脸:( +1. 在 13 年预言 `Golang` 会火遍全世界。同时创建了 14-19 年最火的 Golang 隐修会社区,可惜因为某些原因被封停了,甚是遗憾。 +2. 在 15 年预言 `VSCode` 会成为世界上最好的 IDE;同时我还是 `jaeger tracing` 项目的第一个 star 用户(是的,比作者还早),当时就很看好这个项目的后续发展。 +3. 现在呢,我在这里正式预言: **未来 `Rust` 会成为主流编程语言之一,在几乎所有开发领域都将大放光彩**。总之牛逼已吹下,希望不要被打脸。:( 下面继续简单介绍下 VScode,以下内容引用于官网: -> Visual Studio Code(VSCode)是微软2015年推出的一个轻量但功能强大的源代码编辑器,基于 Electron 开发,支持 Windows、Linux 和 MacOS 操作系统。它内置了对 JavaScript,TypeScript 和 Node.js 的支持并且具有丰富的其它语言和扩展的支持,功能超级强大。Visual Studio Code 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义快捷键、括号匹配和颜色区分、代码片段、代码对比 Diff、GIT 命令等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。 +> Visual Studio Code(VSCode) 是微软 2015 年推出的一个轻量但功能强大的源代码编辑器,基于 Electron 开发,支持 Windows、Linux 和 MacOS 操作系统。它内置了对 JavaScript,TypeScript 和 Node.js 的支持并且具有丰富的其它语言和扩展的支持,功能超级强大。Visual Studio Code 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义快捷键、括号匹配和颜色区分、代码片段、代码对比 Diff、GIT 命令等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。 -## 安装VSCode的 Rust 插件 +## 安装 VSCode 的 Rust 插件 -在VScode的左侧扩展目录里,搜索 `rust`,你能看到两个 Rust 插件,如果没有意外,这两个应该分别排名第一和第二: -1. 官方的 `Rust`,作者是 `The Rust Programming Language`, 官方出品,牛逼就完了,但是……我们并不推荐,这个插件有几个问题: +在 VScode 的左侧扩展目录里,搜索 `rust`, 你能看到两个 Rust 插件,如果没有意外,这两个应该分别排名第一和第二: +1. 官方的 `Rust`,作者是 `The Rust Programming Language`, 官方出品,牛逼就完了,但是……我们并不推荐,这个插件有几个问题: - 首先是在代码跳转上支持的很烂,只能在自己的代码库中跳转,一旦跳到别的三方库,那就无法继续跳转,对于查看标准库和三方库的源码带来了极大的困扰 - 其次,不支持类型自动标注,对于 Rust 语言而言,类型说明是非常重要的,特别是在你不知道给变量一个什么类型时,这种 IDE 的自动提示就变得弥足珍贵 - 代码提示不太好用,有些方法既不会提示,也不能跳转 @@ -22,11 +24,15 @@ 所以,综上所述,我们选择 `rust-analyer` 作为 Rust 语言的插件,具体的安装很简单,点击插件,选择安装即可,根据提示可能需要重新加载 IDE。 -安装完成后,在第一次打开 Rust 项目时,需要安装一些依赖,具体的状态在左下角会进行提示,包括下载、代码构建、building等。 +> 在搜索 VSCode 插件时,报错:`提取扩展出错,XHR failed`,这个报错是因为网络原因导致,很可能是你的网络不行或者翻墙工具阻拦你的访问,试着关掉翻墙,再进行尝试。 -当插件使用默认设置时,每一次保存代码,都会出进行一次重新编译,如果你的电脑慢,有一点一定要注意:在编译器构建代码的同时,不要在终端再运行 `cargo run` 等命令进行编译,不然会获得一个报错提示,大意是当前文件目录已经被锁定,等待其它使用者释放,如果等了很久 IDE 还是没有释放(虽然我没遇到过,但是存在这个可能性),你可以关掉 IDE,并手动 `kill` 掉 `rust-anylyzer`,然后重新尝试。 +安装完成后,在第一次打开 Rust 项目时,需要安装一些依赖,具体的状态在左下角会进行提示,包括下载、代码构建、building 等。 -> 在搜索 VSCode 插件时,报错:`提取扩展出错,XHR failed`,这个报错是因为网络原因导致,很可能是你的网络不行或者翻墙工具阻拦你的访问,试着关掉翻墙,再进行尝试 +当插件使用默认设置时,每一次保存代码,都会出进行一次重新编译。 + +> 如果你的电脑慢,有一点一定要注意: +> +> 在编译器构建代码的同时,不要在终端再运行 `cargo run` 等命令进行编译,不然会获得一个报错提示,大意是当前文件目录已经被锁定,等待其它使用者释放。如果等了很久 IDE 还是没有释放(虽然我没遇到过,但是存在这个可能性),你可以关掉 IDE,并手动 `kill` 掉 `rust-anylyzer`,然后重新尝试。 ## 安装其它好用的插件 From ab60b9d1a92f2d3b289ddf466d93cea6ea292693 Mon Sep 17 00:00:00 2001 From: stirlingx Date: Thu, 20 Jan 2022 11:21:05 +0800 Subject: [PATCH 2/3] Update converse.md --- book/contents/basic/converse.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/contents/basic/converse.md b/book/contents/basic/converse.md index 25916e62..71f2a31e 100644 --- a/book/contents/basic/converse.md +++ b/book/contents/basic/converse.md @@ -200,7 +200,7 @@ fn do_stuff(value: &T) { 首先,从直觉上来说,该方法会报错,因为`T`没有实现`Clone`特征,但是真实情况是什么呢? -我们先来推导一番。 首先通过值方法调用就不再可行,因此`T`没有实现`Clone`特征,也就无法调用`T`的`clone`方法。接着编译器尝试**引用方法调用**,此时`T`变成`&T`,在这种情况下,`clone`方法的签名如下:`fn clone(&&T) -> &T`,记着我们现在对`value`进行了引用。 编译器发现`&T`实现了`Clone`类型(所有的引用类型都可以被复制,因为其实就是复制一份地址),因此可以可以推出`cloned`也是`&T`类型。 +我们先来推导一番。 首先通过值方法调用就不再可行,因此`T`没有实现`Clone`特征,也就无法调用`T`的`clone`方法。接着编译器尝试**引用方法调用**,此时`T`变成`&T`,在这种情况下,`clone`方法的签名如下:`fn clone(&&T) -> &T`,接着我们现在对`value`进行了引用。 编译器发现`&T`实现了`Clone`类型(所有的引用类型都可以被复制,因为其实就是复制一份地址),因此可以可以推出`cloned`也是`&T`类型。 最终,我们复制出一份引用指针,这很合理,因为值类型`T`没有实现`Clone`,只能去复制一个指针了。 From 93463f1bde29a7e362f504e4ec1e70bfe5e1bfc4 Mon Sep 17 00:00:00 2001 From: jiaweichuan Date: Thu, 20 Jan 2022 11:26:06 +0800 Subject: [PATCH 3/3] Update gitignore, ignore .DS_Store file. --- book/.DS_Store | Bin 6148 -> 0 bytes book/.gitignore | 2 +- book/contents/basic/img/.DS_Store | Bin 6148 -> 0 bytes book/contents/img/.DS_Store | Bin 8196 -> 0 bytes book/writing-material/posts/.DS_Store | Bin 8196 -> 0 bytes codes/.gitignore | 2 +- exercise/.gitignore | 3 ++- 7 files changed, 4 insertions(+), 3 deletions(-) delete mode 100644 book/.DS_Store delete mode 100644 book/contents/basic/img/.DS_Store delete mode 100644 book/contents/img/.DS_Store delete mode 100644 book/writing-material/posts/.DS_Store diff --git a/book/.DS_Store b/book/.DS_Store deleted file mode 100644 index ea0ead26fe6440c74bd763fbf920b9bb6267e094..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKPfyf96n_J&bU~!RE+WySaW5udMnRIn$E?n#}dW=3}%h};ACwAjzRCL1)@wCc$;3c~2t@*T7F>?!?#jek2C=>h| z#gNTsKCAIokvCZ_lDUp@7+E7*F-H#%r)TCStXp$aM-$fJo$1L5Yj$St=qPLC3%Bo< zD!aiR<8Ks^1os^&{TdT^i%Lgbes#a0>LQ<#y1trbQdzdQ?^6He0dsI@crZ7Z&yQRg z&0ifGyH+uWJ-51B55*fV@PLQKph?Sql{3eGP0KNT6$_6 za;%3TrEH@f`nBcl?TE(ZQ~G+v9EhqR4}ujQ`LWO0`euY=FU53kiEVS7aUY3ZZU|Sj zM#BiPBd5IXhM~*qw0N);xE>9bS&_#v-xHByG%RE#q+%pFx6^Q|KC2hzzbiHi_DZ7M zREh}&r2rJ{l2VOaV$w)f8D}(`E!a=A#ei|R50Alt9caNjcn=@o7(T)m_y#{nhK!IK zWSq>Bdt{zGB2P()RLKtU$xD^rm3-{$XJ;Z2K6iZVeJ5lAXLa-?d1uqk{gbA}=sWjJ zqy(f4qzwGZfY=`_YyxeKZH02{z)oHP5Ho0&g1Wd%h#X6!t+A~TJt#z_BC1rPuNXw7 zqutVRw#K$Xl@3H-K8T)~=o<==v*Y-d3O#769l!3Dhh<|?+Q=I<~{(S$JL1~vV zkTURpGC(qm&SDX3(`Rc(mEx?mu)V-0M8vff$`tJMaV!;a6pvz)f<8+qh_=SILbRZy PKLV15v`ZQIs|@@ES*y%c diff --git a/book/.gitignore b/book/.gitignore index d0c2cffa..bd3a7c8b 100644 --- a/book/.gitignore +++ b/book/.gitignore @@ -1,2 +1,2 @@ book -*/.DS_Store +.DS_Store diff --git a/book/contents/basic/img/.DS_Store b/book/contents/basic/img/.DS_Store deleted file mode 100644 index e426050b3567d853322f8eb2a7c66f2a311ce8d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!A`+d|5FRTaO@!y$JQ82Up;5_V)yOp&g6%YL|?k74S?DZk!>LQGLYTQ<% zxR>f&&rAqMINeHhGHEn-YqGJ|n%3lGzfrHr=1yxmb;SC{*1>7_F?x#Ci+*ax;r-OI zYH}4YAk2VplL}~3xot7HNe92QajwP8ph;)kHXq#HncEJ9 z>$}7Cr4DD@HAo{dKn%Z)p+1&?l!EU|4%nx;jFO$cFu*bxK^Ky4C-#KQ4Ju~RRqN)b!= z2lxcGtl=BrPgt;mb7!WN-Nb2EEmCJ9&#^uC%$+&&aPO3eL~Z145v>uCgNw1agltOU za=s=~!MwQ*6yOs{O30^>y0kH2ZC_XgtO8a6tAJI&D)2ujfNwS@C+EAbOKolyunJsB z1$cjOaWPg6jy0;S1DOf|fb)2*67CTPD2{8eYH+MkQBkLk9)zI^6JiKWN4d-9z^cKq zMolN7=_HJ2VImZvyo2W|a}rgJHn$2`1tt~X*u6+CMD9cU((!wVwrGs&mP=p3_bNH>~ zaQ~cxyEC0z=$_(Ur*}|^we~4GrOhMQrghEOwvuRI#^76P5cpACD*Y0Lx%q3?7n}uW z$$8u8$)piC<55&=4qx-r3n_!v@qM%P((fdD#T$=h7&rZ}GgJiM>%ipAD?jvPQj??5 zixjt^3!Ft~aj&>`cv!CNth?p=yGQHp;e&E%-K}iz9vv+@H}Bqi_!>B zEt;0~^GVKQkm*y<-DM^`s4c5?5K|9KZx)ldFX{Pw3ru}_mVlSg zE>(b@T9qLMz$Tuiu8qP^)Rk_fBZ~K z9BaF{_Hl7yyRk+^L8iiSpbE!vxiiusiYVw)45-%Ian9$GG@A@OqWzVr;?#0^A4{vb4hi^XhVTe zU{wLl-S=cb&VDDiPxANgGLzBSw7nco+aXp5_s`18cQjjj5*g0XNhHej?a%N;o* z9*sm5Xq^##Me_-2Ha3?T*r#fr>Y0_jMNeHBU&OnxZm@og!^i8v8nB|jias7a_lu{o z%~zGxJ>gsVT_S93=8Asa5jv0G)C;N>wd*n(h33f* f0X{$cVaRobsdDOqT}FB+@gl%vh$a;HrwaT9D%-`# diff --git a/codes/.gitignore b/codes/.gitignore index 5591cf06..bd3a7c8b 100644 --- a/codes/.gitignore +++ b/codes/.gitignore @@ -1,2 +1,2 @@ book -*/.DS_Store \ No newline at end of file +.DS_Store diff --git a/exercise/.gitignore b/exercise/.gitignore index 253f8f33..8a019863 100644 --- a/exercise/.gitignore +++ b/exercise/.gitignore @@ -5,6 +5,7 @@ target/ *.pdb exercises/clippy/Cargo.toml exercises/clippy/Cargo.lock -.idea +.idea/ .vscode *.iml +