国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

以調(diào)試 Rust 的方式來(lái)學(xué)習(xí) Rust

開(kāi)發(fā) 后端
Rustlings 是由 Rust 團(tuán)隊(duì)維護(hù)的開(kāi)源項(xiàng)目,旨在幫助你通過(guò)調(diào)試代碼的方式來(lái)學(xué)習(xí) Rust。

在我上一篇 ??關(guān)于 Rustup 的文章?? 中,我向你們展示了如何安裝 Rust 工具鏈。但是,如果不能上手操作一下 Rust 的話(huà)下載工具鏈又有什么用?學(xué)習(xí)任何語(yǔ)言都包括閱讀現(xiàn)有的代碼和寫(xiě)很多的示例程序,這是精通一門(mén)語(yǔ)言的好方法。然而,我們還可以走第三條路:調(diào)試代碼。

通過(guò)調(diào)試來(lái)學(xué)習(xí)牽扯到嘗試去編譯一個(gè)已經(jīng)寫(xiě)好的(滿(mǎn)是漏洞的)示例程序,理解編譯器生成的錯(cuò)誤信息,修復(fù)示例代碼,然后再重新編譯。重復(fù)這個(gè)過(guò)程直到代碼能夠成功被編譯并運(yùn)行。

??Rustlings?? 是一個(gè)由 Rust 團(tuán)隊(duì)維護(hù)的開(kāi)源項(xiàng)目,旨在幫助你通過(guò)調(diào)試代碼來(lái)學(xué)習(xí) Rust。它也會(huì)一路為你提供提示。如果你是一名 Rust 初學(xué)者,并且剛開(kāi)始閱讀或已經(jīng)讀完了 Rust 書(shū)籍,那么 Rustlings 就是理想的下一步。Rustllings 幫助你將運(yùn)用書(shū)中所學(xué),并轉(zhuǎn)向開(kāi)發(fā)更大的項(xiàng)目。

安裝 Rustlings

我使用(并推薦)Fedora 電腦來(lái)體驗(yàn) Rustlings,但是任何 Linux 發(fā)行版都可以。要安裝 Rustlings,你必須下載并運(yùn)行它的安裝腳本。通常建議你以不具備任何特別權(quán)限的普通用戶(hù)(非 root 用戶(hù))來(lái)運(yùn)行腳本。

記住,你需要 Rust 工具鏈來(lái)使用 Rustlings。如果你還沒(méi)有這些工具鏈,請(qǐng)參考我 ??關(guān)于 Rustup 的文章??。

當(dāng)你準(zhǔn)備好時(shí),下載這個(gè)安裝腳本:

$ curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh  > rustlings_install.sh$ file rustlings_install.shrustlings_install.sh: Bourne-Again shell script, ASCII text executable

閱讀腳本以了解它會(huì)做什么:

$ less rustlings_install.sh

然后運(yùn)行安裝:

$ bash rustlings_install.sh[...]Installing /home/tux/.cargo/bin/rustlingsInstalled package `rustlings v4.8.0 (/home/tux/rustlings)` (executable `rustlings`)All done!

運(yùn)行 ??rustlings?? 以開(kāi)始。

Rustlings 練習(xí)

你現(xiàn)在可以使用命令 ??rustlings??。與標(biāo)志 ??--help?? 一起執(zhí)行來(lái)查看可選的選項(xiàng)。

$ rustlings --help

這個(gè)安裝腳本也克隆了 Rustlings 的 Git 倉(cāng)庫(kù),并安裝了運(yùn)行示例程序所需的依賴(lài)。你可以在 ??ruslings?? 下的 ??exercises?? 目錄查閱這些示例程序。

$ cd rustlings$ pwd/home/tux/rustlings$ lsAUTHORS.md  Cargo.toml        CONTRIBUTING.md  info.toml install.sh README.md  target Cargo.lock  CHANGELOG.md  exercises install.ps1  LICENSE src tests$ ls -m exercises/advanced_errors, clippy, collections, conversions, enums, error_handling, functions, generics, if, intro, macros, mod.rs, modules, move_semantics, option, primitive_types, quiz1.rs, quiz2.rs, quiz3.rs, quiz4.rs, README.md, standard_library_types, strings, structs, tests, threads, traits, variables

從命令行列出所有練習(xí)

命令 ??ruslings?? 提供給你一個(gè) ??list?? 命令用以展示每個(gè)示例程序,它的完整路徑,以及狀態(tài) (默認(rèn)為 “待定”)。

$ rustlings listName         Path                                 Statusintro1       exercises/intro/intro1.rs            Pendingintro2       exercises/intro/intro2.rs            Pendingvariables1   exercises/variables/variables1.rs    Pendingvariables2   exercises/variables/variables2.rs    Pendingvariables3   exercises/variables/variables3.rs    Pending[...]

在顯示結(jié)尾處,你會(huì)有一個(gè)進(jìn)度報(bào)告用來(lái)追蹤進(jìn)度。

Progress: You completed 0 / 84 exercises (0.00 %).

查看示例程序

命令 ??rustlings list?? 向你展示了現(xiàn)有的程序,所以你可以在任何時(shí)候查看這些程序的代碼,你只需要將完整路徑復(fù)制到你的終端作為命令 ??cat?? 或者 ??less?? 的參數(shù):

$ cat exercises/intro/intro1.rs

驗(yàn)證你的程序

現(xiàn)在你可以開(kāi)始調(diào)試程序了。你可以使用命令 ??verify?? 來(lái)做這件事。注意 Rustlings 選擇了列表里的第一個(gè)程序(??intro1.rs??)并嘗試去編譯它,最后編譯成功:

$ rustlings verifyProgress: [-----------------------------------] 0/84? Successfully ran exercises/intro/intro1.rs!You can keep working on this exercise,or jump into the next one by removing the `I AM NOT DONE` comment: 6 |  // Execute the command `rustlings hint intro1` for a hint. 7 |   8 |  // I AM NOT DONE 9 |

正如你從結(jié)果中所見(jiàn),盡管示例代碼成功編譯了,你依然需要做一些工作。每個(gè)示例程序的源文件中都帶有以下注釋?zhuān)?/p>

$ grep "NOT DONE" exercises/intro/intro1.rs// I AM NOT DONE

雖然第一個(gè)程序的編譯沒(méi)有問(wèn)題,除非你去掉注釋 ??I AM NOT DONE??,Rustlings 不會(huì)移到下一個(gè)程序。

來(lái)到下一個(gè)練習(xí)

一旦你從 ??intro1.rs?? 中去掉這些注釋?zhuān)憔涂梢酝ㄟ^(guò)再一次運(yùn)行命令 ??rustlings verify?? 來(lái)到下一個(gè)練習(xí)。這一次,你會(huì)發(fā)現(xiàn) Rustlings 嘗試去編譯這個(gè)系列中的下一個(gè)程序(??intro2.rs??),但是遇到了一個(gè)錯(cuò)誤。你應(yīng)該調(diào)試并修復(fù)這個(gè)問(wèn)題,并前進(jìn)。這是你理解為什么 Rust 說(shuō)程序有漏洞的至關(guān)重要的一步。

$ rustlings verifyProgress: [>------------------------] 1/84??  Compiling of exercises/intro/intro2.rs failed! Please try again. Here's the output:error: 1 positional argument in format string, but no arguments were given --> exercises/intro/intro2.rs:8:21  |8 |         println!("Hello {}!");  |                         ^^error: aborting due to previous error

來(lái)點(diǎn)提示

Rustlings 有一個(gè)非常好用的 ??hint?? 參數(shù),這個(gè)參數(shù)會(huì)告訴你示例程序中哪里出錯(cuò)了,以及如何去修復(fù)它。你可以認(rèn)為這是在編譯錯(cuò)誤信息基礎(chǔ)之上,一個(gè)額外的幫助選項(xiàng)。

$ rustlings hint intro2Add an argument after the format string.

基于以上提示,修復(fù)這個(gè)程序就很簡(jiǎn)單了。你只需要在語(yǔ)句 ??println?? 中加一個(gè)額外的參數(shù)。這個(gè) diff 對(duì)比應(yīng)該能幫你理解發(fā)生的變化:

< println!("Hello {}!", "world");---> println!("Hello {}!");

一旦你做出了修改,并從源代碼中去掉了注釋 ??NOT DONE??,你可以再一次運(yùn)行 ??rustlings verify?? 來(lái)編譯并運(yùn)行代碼。

$ rustlings verifyProgress: [>-------------------------------------] 1/84? Successfully ran exercises/intro/intro2.rs!

追蹤進(jìn)度

你無(wú)法在一天之內(nèi)做完所有的練習(xí),忘記練到哪也很常見(jiàn)。你可以執(zhí)行命令 ??list?? 來(lái)查看你的練習(xí)狀態(tài)。

$ rustlings listName         Path                                  Statusintro1       exercises/intro/intro1.rs             Done   intro2       exercises/intro/intro2.rs             Done   variables1   exercises/variables/variables1.rs     Pendingvariables2   exercises/variables/variables2.rs     Pendingvariables3   exercises/variables/variables3.rs     Pending[...]

運(yùn)行特定的練習(xí)

如果你不想從頭開(kāi)始并且想要跳過(guò)一些練習(xí),Rustlings 允許你使用命令 ??rustlings run?? 來(lái)專(zhuān)注特定的練習(xí)。如此可以運(yùn)行指定的程序而不需要驗(yàn)證之前的課程。例如:

$ rustlings run intro2Hello world!? Successfully ran exercises/intro/intro2.rs$ rustlings run variables1

敲入練習(xí)名字可能會(huì)變得乏味,但 Rustlings 為你準(zhǔn)備了便利的命令 ??next?? 用來(lái)移向系列中的下一個(gè)練習(xí)。

$ rustlings run next

替代命令 watch

如果你不想在每次修改后還要敲一次 ??verify??,你可以在終端窗口中運(yùn)行命令 ??watch??,然后再繼續(xù)修改源代碼以解決問(wèn)題。命令 ??watch?? 會(huì)檢測(cè)到這些修改,然后重新編譯以查看這些問(wèn)題是否被解決。

$ rustlings watch

通過(guò)調(diào)試學(xué)習(xí)

Rust 編譯器以提供非常有意義的錯(cuò)誤信息而被熟知,這些錯(cuò)誤信息會(huì)幫助你理解在你代碼中的問(wèn)題。這通常意味著更快的調(diào)試。Rustlings 是練習(xí) Rust,學(xué)會(huì)閱讀錯(cuò)誤信息,并理解 Rust 語(yǔ)言的優(yōu)秀途徑。來(lái)看看 ??GitHub?? 上 Rustlings 5.0.0 的最新功能吧。

??下載 Rust 速查表??

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2024-11-08 09:19:28

2020-02-17 16:28:49

開(kāi)發(fā)技能代碼

2023-05-29 16:25:59

Rust函數(shù)

2024-05-16 11:45:19

Rust項(xiàng)目代碼

2024-03-19 08:54:20

Rust語(yǔ)言內(nèi)存管理應(yīng)用程序開(kāi)發(fā)

2023-05-14 18:56:50

Rust數(shù)據(jù)類(lèi)型

2023-10-07 10:11:59

ViteRust

2025-01-03 09:12:11

2023-05-23 18:11:12

Rust數(shù)組元組

2021-03-19 08:58:19

Rust共享愿景文檔開(kāi)發(fā)者

2024-04-22 08:06:34

Rust語(yǔ)言

2024-11-27 10:28:22

Rust繼承識(shí)別

2023-06-15 17:00:11

Rust循環(huán)

2021-02-24 07:42:34

PythonRust語(yǔ)言

2024-06-27 11:08:45

2023-02-24 13:07:07

2024-01-18 15:24:06

Rust開(kāi)發(fā)鴻蒙OH4.0

2023-04-10 18:03:18

Rust編程語(yǔ)言

2024-06-17 09:00:08

2024-04-26 00:00:00

Rust檢查器代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

97se国产在线视频| 久久青青视频| av网在线观看| 欧美一二三四在线| 欧美一区二区综合| 亚洲美女在线视频| 免费毛片aaaaaa| 国产成人午夜精品影院观看视频 | 亚洲欧洲一区二区三区| 欧美在线视频一区二区三区| 日韩高清一级| 色悠悠国产精品| 538视频在线| 一本到高清视频免费精品| 欧美精品免费在线| 黄色日韩在线| 欧美在线性视频| 牛牛电影国产一区二区| 国产精品久久久久国产精品日日| 欧洲精品久久| 欧美人与拘性视交免费看| 91精品电影| 欧美wwwxxxx| 国产调教在线| 欧美午夜精品理论片a级按摩| 97超超碰碰| 久久视频在线观看| 国产午夜一区二区| av在线免费网站| 肉色丝袜一区二区| 91久久极品少妇xxxxⅹ软件| 日韩av字幕| 欧美精品久久久久久久久久| 日韩av片在线看| 久久精品国产999大香线蕉| 国产伦精品一区二区| 日韩精品dvd| 日韩免费观看视频| 天堂在线免费av| 中文字幕中文乱码欧美一区二区| 国产青青在线视频| 国产精品综合在线视频| 亚洲不卡1区| 久久一本综合频道| 日韩免费av电影| 久久亚洲综合| 亚洲区一区二区三区| 国产精品社区| 日韩av电影免费在线观看| 久久精品首页| 日韩一区二区三区高清| 日韩精品国产欧美| 国产69精品久久久久9999apgf| 99精品小视频| 5566av亚洲| 欧美天堂亚洲电影院在线观看| 国产免费一区二区三区在线能观看 | www.成人| 国模视频一区二区三区| 亚洲欧美tv| 国产日韩欧美在线视频观看| 国产一区二区三区四区三区四| 欧美高清视频一区二区三区在线观看| 国产经典一区| 亚洲五码中文字幕| 免费黄色片在线观看| 7777女厕盗摄久久久| av资源网在线播放| 国产亚洲激情在线| 国产ts一区| 91热福利电影| 激情成人午夜视频| 五月天av在线播放| 亚洲www啪成人一区二区麻豆| av电影在线观看| 精品一区二区三区三区| 亚洲热app| 欧美一级午夜免费电影| 久久男人av资源站| 欧美插天视频在线播放| 国产一区二区区别| 欧美日韩亚洲综合一区二区三区激情在线| 国产精品一二三四| 黄网在线播放| 欧美tickling挠脚心丨vk| 巨大黑人极品videos精品| 欧美精品日韩综合在线| 电影一区二区三区| 欧美一区二区三区四区在线| 亚洲日韩视频| 亚洲国产精品久久久久爰色欲| 亚洲18女电影在线观看| 欲香欲色天天天综合和网| 国产大片精品免费永久看nba| 久久久精品午夜少妇| 黄色一级大片在线观看| 欧美日韩中文字幕一区| 麻豆一区在线| 欧美激情国产日韩| 国产精品久久三| 国产又色又爽又黄刺激在线视频| 久久久久久成人| 亚洲欧美日韩国产| 亚洲少妇第一页| 欧美一级片在线观看| 欧美调教在线| 特级黄色录像片| 欧美日韩国产精品| 国产成人视屏| 日本一区二区视频| 亚洲男女一区二区三区| 依依综合在线| julia一区二区中文久久94| 久久久久久久综合| 爆操欧美美女| 国产97色在线| 成人福利视频网站| 中日韩高清电影网| 国产精品久久久久免费a∨大胸 | 欧美日韩91| 国产区二区三区| 日韩女优电影在线观看| 日韩一区二区在线| 狠狠97人人婷婷五月| 欧美日韩久久不卡| 成年人在线观看| 久久乐国产精品| 麻豆精品一区二区三区| 美州a亚洲一视本频v色道| 欧美激情小视频| 国产成人精品亚洲午夜麻豆| 男人的天堂在线视频免费观看 | 国产高清一区日本| 欧美日本一道| 成人av番号网| 中文字幕永久在线不卡| 78精品国产综合久久香蕉| 久久综合精品一区| 欧美性高跟鞋xxxxhd| 亚洲国产合集| 成年人在线看片| 俺也去精品视频在线观看| 丝袜亚洲精品中文字幕一区| 日本一级在线观看| 国产精品第10页| 亚洲欧美另类久久久精品2019| 日韩久久99| 亚洲国产成人精品无码区99| 91蜜桃传媒精品久久久一区二区| 成人影院在线看| 国产综合av一区二区三区| 午夜精品久久久久久久蜜桃app| 欧美爱爱网站| 日本黄大片一区二区三区| 麻豆精品少妇| 久久精品夜夜夜夜夜久久| 激情偷乱视频一区二区三区| 怡红院在线观看| 日韩伦理一区| 欧美人xxx| 国产精品中文久久久久久久| 国产亚洲一二三区| 日韩中文字幕在线一区| 精品国产露脸精彩对白 | 青青草97国产精品免费观看 | 日韩欧美精品综合| 男人天堂v视频| 91精品国产91久久久久久不卡| 国产视频一区二区在线| 一区二区三区四区精品视频| 亚洲国产精品va在线看黑人| 亚洲男女自偷自拍| 另类视频在线| 国产91av视频在线观看| 一区二区三区视频免费| 99riav一区二区三区| **爰片久久毛片| 日本1区2区| 国产精品二区三区四区| 欧美视频在线播放| 性一交一乱一区二区洋洋av| 极品美鲍一区| 一卡二卡三卡视频| 欧美国产极速在线| 一区二区高清在线| 亚洲激情另类| 中文字幕在线免费观看视频| 男人添女人下面高潮视频| 97超级碰碰人国产在线观看| 精品国产户外野外| 色黄视频在线观看| 国产aaa免费视频| 欧美二区乱c黑人| 五月天网站亚洲| 视频一区二区三区入口| 国产高清日韩| 日韩电影免费| 精品无码国产一区二区三区av| 9.1国产丝袜在线观看| 欧美日韩三级一区|