Linux中國

Rust 基礎系列 #1: 創建並運行你的首個 Rust 程序

Rust 編程系列的第一篇中,你將學習如何用 Rust 編寫和執行你的第一個程序。

Rust 是最快風靡開發者和科技公司的系統編程語言之一。日常使用它的開發者將其評為最受歡迎的編程語言之一,而它 已經連續七年獲此殊榮了

它是如此的受歡迎,以致於現在有兩股巨大的推力將其帶入 Linux 生態系統中:

而這還僅僅是在 Linux 生態系統中。安卓上的藍牙軟體 Gabeldorsche 現在也是由 Rust 編寫的。

你是否也看到了 Rust 的流行趨勢?那麼你或許也想學習使用 Rust 進行編程。

為什麼你要考慮 Rust 而不是其他編程語言?

首先,Rust 是一門 類型安全的編程語言 並且 擁有極其嚴格的編譯期檢查。因此,你首先會 「被迫」 寫不出不安全的代碼(好吧,通常是這樣)。

Rust 編程語言有以下 「目標」:

  • 性能:Rust 的二進位文件和 C 語言的二進位文件一樣快,有時甚至超過了 C++ 的二進位文件!
  • 內存安全:Rust 非常重視內存安全。
  • 並發性:對內存安全的關注消除了很多類似競爭的情況,並幫助你在程序中無畏並發。

以下是在 C/C++ 等語言中可能犯的一些錯誤(但 Rust 不會):

  • 釋放後使用
  • 雙重釋放
  • 越界訪問
  • 使用 NULL
  • 不適當的指針運算或訪問
  • 使用未經初始化的變數
  • 線程不安全的多線程

看看 蘋果微軟谷歌 等大公司因這類 0day 錯誤而引起的問題吧。

現在你可能知道了為什麼要選擇 Rust 語言而不是其他編程語言,讓我們開始學習 Rust 語言的系列教程吧!

目標受眾

出於對 Rust 的熱愛,我寫了這個系列的 Rust 教程,幫助你熟悉 Rust 編程的概念。

這個教程系列是為已經熟悉 C 和 C++ 等編程語言的人準備的。我假設你已經知道了 變數函數循環 等基本術語。

我對你的唯一要求是你不懈的堅持與努力。

安裝 Rust 工具鏈

我希望你能在本地安裝 Rust 工具鏈。你可以通過運行以下命令來做到這一點: (LCTT 譯註:如果你使用 Linux 發行版,請不要直接安裝軟體源里的 Rust 工具鏈,儘管這樣看起來很便捷。)

curl --proto '=https' --tlsv1.3 -sSf https://sh.rustup.rs | sh

Installing Rust on Ubuntu Linux

除了 Rust 基本工具鏈,我還建議再安裝一些工具,這些工具將在開發過程中幫助你:

rustup component add rust-src rust-analyzer rust-analysis

你還需要 安裝 gcc。否則,你可能會遇到「鏈接器 cc 未找到」的錯誤。該軟體包在不同的發行版中都被稱為 gcc。

在 Ubuntu 和 Debian 上使用:

sudo apt install gcc

? 如果你不希望在本地安裝 Rust 工具鏈,不用擔心。你還可以直接在你的瀏覽器中運行 Rust 代碼!只要到 Rust 試驗場 並把所討論的代碼粘貼在那裡。

Hello Rust!

自從 丹尼斯·里奇 Dennis Ritchie 布萊恩・柯林漢 Brian Kernighan 用 「Hello World」 程序介紹了 C 語言後,在 UNIX 世界裡,你學習的任何新編程語言第一步都這樣做,這已經成為一種習慣。

因此,讓我們也用 Rust 編寫我們的 Hello World 程序。

我將在我的家目錄里 新建一個項目目錄 叫做 learn-rust-its-foss。然後,在這裡我將新建一個叫 hello-world 的目錄。最後,在裡面新建 main.rs 文件:

// 這串代碼將列印字元
// "Hello world!" 將被列印到 `標準輸出`

fn main() {
    println!("Hello world!");
}

? 就像 C、C++ 和 Java 源代碼文件相應的擴展名是 .c.cpp.java,Rust 的源文件擴展名是 .rs

作為一個 C/C++ 程序員,你可能已經在 Linux 上使用 GCC,在 macOS 上使用 Clang,在 Windows 上使用 MSVC。但是為了編譯 Rust 代碼,該語言的創造者自己提供了一個官方的 rustc 編譯器。

運行 Rust 程序和 執行 C/C++ 程序 是一樣的。你首先編譯代碼,然後得到可執行文件,最後再運行這個可執行文件從而來運行代碼。

$ ls
main.rs

$ rustc main.rs

$ ls
main  main.rs

$ ./main
Hello world!

很好!

解讀 Rust 代碼

現在你已經編寫、編譯並運行了你的第一個 Rust 程序,讓我們對 「Hello World」 的代碼進行解讀,並理解每一部分。

fn main() {
}

fn 關鍵字用來在 Rust 中聲明一個函數。在它後面 main 是這個被聲明函數的名字。像許多編譯型編程語言一樣,main 是一個特殊的函數,用來作為你的程序的入口。

任何寫在 main 函數里的代碼(在大括弧 { } 之間)將在程序被啟動時運行。

println 宏

main 函數中, 有一個語句(LCTT 譯註:「語句」 區別於 「表達式」):

println!("Hello world!");

就像 C 語言的標準庫有 printf 函數一樣,Rust 語言的標準庫有 println 。宏類似於函數,但它以感嘆號!)來區分。你將在本系列的後面學習宏和函數的知識。

println 宏接收一個格式化的字元串,並把它放到程序的標準輸出中(在我們的例子中,就是終端)。由於我希望輸出一些文本而不是一個變數,我將把文本放在雙引號(")內。最後,我用一個分號來結束這個語句,表示語句的結束。

? 你只需知道,任何看起來像函數調用但在開頭括弧前有感嘆號的東西,就是 Rust 編程語言中的一個宏。

注釋

Rust 遵循已知的 C 編程語言的注釋風格。單行注釋以兩個正斜杠(//)開始,多行注釋以 /* 開始,以 */ 結束。

// 這是一個多行注釋
// 但是沒有什麼阻止你在
// 第二行或第三行也這樣寫

/*
 * 這是一個「真•多行注釋」
 * 它看起來比較漂亮
 */

總結

你剛剛通過 Hello World 程序邁出了用 Rust 寫代碼的第一步。

作為一種練習,也許你可以編寫並執行一個列印出 Yes! I did Rust 的 Rust 程序。

在本系列的下一部分中,你將學習在 Rust 程序中使用變數。敬請期待!

(題圖:MJ:computer sci-fi ,code secure ,"rust" ,gold blue slive ,background dark, high resolution super detailed)

via: https://itsfoss.com/rust-introduction/

作者:Pratham Patel 選題:lkxed 譯者: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中國