Linux中國

我的 7 大 Rust 關鍵字

我使用 Rust 已經有幾個月了,寫的東西比我預期的要多——儘管隨著我的學習,我改進了所寫的代碼,並完成了一些超出我最初意圖的更複雜的任務,相當多的東西已經被扔掉了。

我仍然喜歡它,並認為談論一些在 Rust 中反覆出現的重要關鍵字可能會有好處。我會提供我個人對它們的作用的總結:為什麼你需要考慮如何使用它們,以及任何其他有用的東西,特別是對於剛接觸 Rust 的新手或來自另一種語言的人(如 Java;請閱讀我的文章 為什麼作為一個 Java 程序員的我喜歡學習 Rust)。

事不宜遲,讓我們開始吧。獲取更多信息的好地方總是 Rust 官方文檔 —— 你可能想從 std 標準庫開始。

  1. const – 你可以用 const 來聲明常量,而且你應該這樣做。雖然這不是造火箭,但請一定要用 const ,如果你要在不同的模塊中使用常量,那請創建一個 lib.rs 文件(Rust 默認的),你可以把所有的常量放在一個命名良好的模塊中。我曾經在不同模塊的不同文件中發生過 const 變數名(和值)的衝突,僅僅是因為我太懶了,除了在不同文件中剪切和粘貼之外,我本可以通過創建一個共享模塊來節省大量的工作。
  2. let – 你並不 總是 需要用 let 語句聲明一個變數,但當你這樣做時你的代碼會更加清晰。此外,如果可以,請一定要添加變數類型。Rust 會盡最大努力猜測它應該是什麼類型的變數,但它不一定總能在運行時做到這一點(在這種情況下,編譯器 Cargo 會提示你),它甚至可能做不到你期望的那樣。在後一種情況下,對於 Cargo 來說,抱怨你所賦值的函數(例如)與聲明不一致,總比 Rust 試圖幫助你做錯事,而你卻不得不在其他地方花費大量時間來進行調試要簡單。
  3. matchmatch 對我來說是新鮮事物,我喜歡使用它。它與其他編程語言中的 switch 沒有什麼不同,但在 Rust 中被廣泛使用。它使代碼更清晰易讀,如果你做了一些愚蠢的事情(例如錯過一些可能的情況),Cargo 會很好地提示你。我一般的經驗法則是,在管理不同的選項或進行分支時,如果可以使用 match,那就請一定要使用它。
  4. mut – 在聲明一個變數時,如果它的值在聲明後會發生變化,那麼你需要聲明它是可變的(LCTT 譯註:Rust 中變數默認是不可變的)。常見的錯誤是在某個變數 沒有 變化的情況下聲明它是可變的,這時編譯器會警告你。如果你收到了 Cargo 的警告,說一個可變的變數沒有被改變,而你認為它被 改變 了,那麼你可能要檢查該變數的範圍,並確保你使用的是正確的那個。
  5. return – 實際上我很少使用 return,它用於從函數中返回一個值,但是如果你只是在函數的最後一行提供值(或提供返回值的函數),通常會變得更簡單,能更清晰地閱讀。警告:在很多情況下,你 忘記省略這一行末尾的分號(;),如果你這樣做,編譯器會不高興的。
  6. unsafe – 如其意:如果你想做一些不能保證 Rust 內存安全的事情,那麼你就需要使用這個關鍵字。我絕對無意在現在或將來的任何時候宣布我的任何 Rust 代碼不安全;Rust 如此友好的原因之一是它阻止了這種黑客行為。如果你真的需要這樣做,再想想,再想想,然後重新設計代碼。除非你是一個非常低級的系統程序員,否則要 避免 使用 unsafe
  7. use – 當你想使用另一個 crate 中的東西時,例如結構體、變數、函數等,那麼你需要在你要使用它的代碼的代碼塊的開頭聲明它。另一個常見的錯誤是,你這樣做了,但沒有在 Cargo.toml 文件中添加該 crate (最好有一個最小版本號)。

我知道,這不是我寫過的最複雜的文章,但這是我在開始學習 Rust 時會欣賞的那種文章。我計劃在關鍵函數和其他 Rust 必知知識方面編寫類似的文章:如果你有任何要求,請告訴我!

本文最初發表於 Alice, Eve, and Bob 經作者許可轉載。

via: https://opensource.com/article/20/10/keywords-rust

作者:Mike Bursell 選題:lujun9972 譯者:mcfd 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國