Hello,world!

2022-04-21 10:03 更新

Hello, world!

現(xiàn)在,你已經(jīng)安裝好了 Rust,讓我們開始寫第一個 Rust 程序。任何新的語言,按照慣例,讓你寫的第一個程序就是打印文本“Hello,world!“到屏幕上。從這樣一個簡單的程序開始的好處是,你可以驗證你的編譯器不只是安裝好了,而且其工作也是正常的。打印信息到屏幕上是一個很常見的事情。

首先,我們需要做的就是創(chuàng)建一個能讓我們寫入代碼的文件。我喜歡在我的主目錄里創(chuàng)建一個 projects 目錄,并把我所有的項目放在這里。Rust 是不在乎你的代碼放在哪里的。

這實際上會導致另一個我們應該提到的問題:本教程假設你對命令行基本熟悉。Rust 本身對你的編輯工具或者代碼所在的位置并沒有特別要求。如果你更喜歡 IDE 而不是命令行,你可以試試 SolidOak,或者你最喜歡的 IDE 的其他插件。社區(qū)中有很多不同質(zhì)量的擴展開發(fā)的組件。Rust 團隊還為各種編輯器編寫插件。配置編輯器或 IDE 超出了本教程的范圍,所以如果需要,請查看你的安裝的文檔。

按照以上所說,讓我們在項目目錄中創(chuàng)建一個目錄。

    $ mkdir ~/projects
    $ cd ~/projects
    $ mkdir hello_world
    $ cd hello_world

如果你使用的是 Windows,而不是使用 PowerShell, ~ 可能起作用。詳細內(nèi)容,請參閱您的 shell 文檔。

讓我們創(chuàng)建一個新的源文件。我們將新文件命名為 main.rs。Rust 文件總是以 .rs 擴展名結(jié)束。如果你的文件名使用超過了一個單詞,使用下劃線分開:是 hello_world.rs,而不是 helloworld.rs.

現(xiàn)在,打開你的文件,輸入以下內(nèi)容:

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

保存文件,然后在終端窗口輸入:

    $ rustc main.rs
    $ ./main # or main.exe on Windows
    Hello, world!

成功啦!讓我們詳細看一遍剛剛發(fā)生了什么事。

    fn main() {

    }

在 Rust 中,這些行定義了一個函數(shù)。這個 main 函數(shù)是特殊的:它是每個 Rust 程序的開始。第一行表示說,“我聲明了一個函數(shù),名叫 main。它不需要任何參數(shù),也不返回任何數(shù)據(jù)。” 如果有參數(shù),他們會在括號((和))中,因為從這個函數(shù)中,我們不返回任何東西,所以我們可以完全省略返回類型。以后我們添加上。

你還會注意到,函數(shù)是用花括號括起來的({和 })。Rust 需要這些花括號包裹起函數(shù)體。把左花括號和函數(shù)聲明放在在同一行,并用空格隔開,被認為是一種良好的編程風格。

接下來是這一行:

    println!("Hello, world!");

在我們的小程序中,這一行做了所有的工作。有很多細節(jié)是非常重要的。首先,它有四個空格的縮進,沒有標簽。請配置你的編輯器,選擇 tab 鍵插入四個空格。我們提供了一些各種編輯器的示例配置.

第二點是 println!() 部分。這里調(diào)用了一個 Rust 宏。宏是元程序編程在 Rust 中的實現(xiàn)。如果這里它是一個函數(shù),它應該是這樣的: println()。對于我們來說,我們不需要擔心這其中的差異。我們僅僅只需知道,有時候,你會看到一個 !,這意味著你調(diào)用了宏而不是一般的函數(shù)。Rust 作為一個宏實現(xiàn) println! ,而不是一個函數(shù),其有很好的理由,但這是一個高級話題了。最后需要說明的一件事:如果你使用過宏,Rust 的宏是明顯不同于 C 的宏。不要害怕使用宏。我們最終會了解到宏的細節(jié),現(xiàn)在你必須相信我們。

接下來, "Hello, world!"是一個‘字符串’。在系統(tǒng)編程語言里,字符串是一個令人驚奇的復雜主題。這里是一個‘靜態(tài)分配’的字符串。如果你想進一步了解分配,請查看“棧和堆”章節(jié),但如果你不想了解的話,其實現(xiàn)在也并不需要了解。我們將這個字符串作為參數(shù)傳遞給 println!,將字符串打印到屏幕上。很容易!

最后,這一行以分號(;)結(jié)束。Rust 是一種面向表達式的語言,這意味著大多數(shù)代碼是表達式,而不是語句。這個;用于表明這個表達式的結(jié)束,并準備開始下一個。大多數(shù) Rust 代碼行以 ; 結(jié)尾。

最終,編譯和運行我們的程序。我們可以用我們的編譯器編譯,通過向命令 rustc 后面?zhèn)鬟f我們的源文件的名稱:

    $ rustc main.rs

如果你有 C 或 C++ 的背景,那么這就類似于 gcc 或者 clang。Rust 將輸出一個二進制可執(zhí)行文件。你可以用命令 ls 來查看它:

    $ ls
    main  main.rs

或者在 Windows 平臺上:

    $ dir
    main.exe  main.rs

現(xiàn)在有兩個文件:我們帶有擴展名 .rs 的源代碼文件和可執(zhí)行文件(在Windows上,main.exe ,其他地方, mian)。

    $ ./main  # or main.exe on Windows

這將在我們的終端打印出 Hello,world!.

如果你有動態(tài)語言像 Ruby,Python,或者 JavaScript 的背景,你可能不習慣這兩個步驟是分開的。Rust 是一個預編譯語言,這意味著你可以編譯一個程序,把它給別人,他們并不需要安裝了 Rust。如果你給別人 .rb、 .py 或者 .js 文件,他們需要有一個 Ruby/Python/JavaScript 的實現(xiàn)安裝,但是你只需要一個命令來編譯和運行你的程序。一切都是語言設計的權衡,Rust 已做出了自己的選擇。

恭喜你!你已經(jīng)正式書寫了一個 Rust 程序。這讓你成為了一個 Rust 程序員!歡迎你!

接下來,我想介紹你認識另一個工具,Cargo。它用于編寫真實的 Rust 程序。對于簡單的代碼,只是用 rustc 就很好了,但隨著項目的增長,你會想擁有幫助你管理的所有選項的工具,并使它能容易與他人分享你的代碼和項目。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號