2.2 hello world

原文地址 http://doc.rust-lang.org/book/hello-world.htmljavascript

好啦,如今你已經把Rust語言都安裝好了,讓咱們開始寫第一個Rust程序。按照傳統來講,咱們都通常把學習一門新語言的第一個程序的內容就是把「hello world」輸出到屏幕上面去。經過這個簡單程序,咱們能夠很方便地驗證咱們的編譯器是否安裝完成和可否順利地工做起來,輸出屏幕信息是最多見的作法。html

 

第一件事咱們須要作的是把咱們的代碼寫在一個文件上,我喜歡在個人主目錄下面創建一個項目目錄(project dir),並把我全部代碼的項目放在這裏,不用擔憂rust並在意你的代碼在哪裏。java

 

上述會致使一個咱們必須具有的前提:這個指南假設你已經很是熟悉命令行。(~_~) rust並無對你的編輯工具備特殊的需求,甚至你的代碼位置。若是你偏心於IDE的話,你能夠嘗試一下SolidOak這個工具,或者你喜歡的IDE搭配上任何的插件。如今有不少不一樣質量拓展的社區。rust的團隊也帶給你們不一樣編輯器的插件。配置你的編輯器和ide並不在本教程的範圍,特別是檢查你配置你編輯器的文檔。python

 

好的,按照咱們上面所說咱們開始創建咱們rust project的目錄linux

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

若是你在window系統下而且不用powershell,這個~符號可能不會起做用。諮詢你的shell,查看細節吧。c++

 

讓咱們建一個新的源文件。咱們將這個文件命名爲main.rs。rust的源文件老是會以.rs的後綴名結尾的。若是你想使用多於一個單詞的文件名,我建議使用下劃線:程序員

hello_world.rs 比 helloworld.rs要更加的清晰。shell

 

如今你打開文件,輸入如下代碼:編程

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

 保存文件,並在你的終端窗口輸入:小程序

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

成功了!讓咱們回顧剛纔發生的細節。

fn main() {
}

這些行定義了Rust的方法。這個main方法是特殊的存在:它是所用rust程序開始的地方,第一行聲明瞭」我在定義一個沒有參數和返回值的main方法「 若是是有參數的方法,參數會包含在括號裏面。由於咱們沒有在此方法返回任何的東西,因此咱們徹底能夠忽略這個方法的返回類型。後面咱們會有深刻地瞭解這一部分。

 

你可能也注意到整個方法定義在這個{}括號所包圍着。rust須要這個去聲明方法體的內容,它被認爲是一個良好的代碼格式,被兩個大括號包圍起來的空間做爲函數的定義。

接下來是這一行

println!("Hello,world!);

 咱們的小程序在這一行已經完成全部的工做。這裏有不少細節。第一個地方是這裏須要四個空格而不是tab(製表符)。請配置你的編輯器使用tab鍵會插入四個空格符。咱們這裏提供多種編輯器的配置。http://doc.rust-lang.org/book/hello-world.html

 

第二地方時println!()地方。這裏調用rust的宏,宏就是rust已經幫你完成元變成。若是它被一個方法替換,它看起來會是這樣一個樣子:println()。咱們這樣作目的,咱們不再須要在乎二者的差異,咱們只須要知道,當你看到!這個感嘆號的時候,那就意味着你正在調用宏而不是普通方法。rust做爲宏去實現 println!方法而不是普通方法有不少的好處,可是這是一個高級的話題。最後咱們須要注意的是rust的宏與c語言的宏有着本質性區別,若是你準備使用它的話,不要懼怕去使用它。咱們最後會知道上面所說的細節,如今你只須要相信我就能夠了。

 

接下來地方時,」Hello,world!「是一個字符串類型。字符串也是一個使人驚歎的複雜話題在系統編程語言裏面,這是一個」靜態分配「的字符串。若是你想更加深刻了解這個分配的過程,你能夠查一下 the stack and the heaphttp://doc.rust-lang.org/book/the-stack-and-the-heap.html這一章節內容。咱們須要把這個字符串當作一個參數pringln!方法輸出到屏幕上就能夠了

 

最後,這一行已分號做爲結尾。rust是一門」面向表達「的語言,在rust語言裏面大部分都是做爲表達式而不是語句。這個;表達告終束的表達式,同時代表下一個準備開始。在rust裏面大部分行都是以分號;結束。

 

最後,咱們編譯和運行咱們程序。咱們能夠經過咱們的rustc編譯器來編譯,經過給編譯器+源文件的名字。

 rustc main.rs

這和gcc和clang的編譯很是類似,若是你有着c或者c++的背景。Rust會產生一個二進制的執行文件。你能夠經過ls命令查看到(linux或mac下)

 $ ls
main  main.rs

或者在window下面

 $ dir
main.exe  main.rs

如今就有兩個文件,一個是咱們的源代碼文件(以rs結尾的可執行文件)

 $ ./main  # or main.exe on Windows

這個將會在咱們的終端上打印出 Hello,world!

 

若是你是從動態語言(python,javascript)學習rust的話,你可能未曾經歷過上訴的兩個步驟。rust是一門提早編譯的語言。這意味着你能夠編譯你的程序,把可執行的文件給到其餘任何人,別人不須要安裝rust。若是你給任何一我的以.rb ,.py和.js的文件,別人就相應的安裝ruby,python和javascript,可是你只要一行命令就能夠編譯並運行你的程序。在任何一門語言設計的時候都有一個權衡,rust只是實現它本身的方式。

 

恭喜你!你已經能夠證明寫出一個rust的程序,那會引導你成爲一個rust的程序員。很是歡迎^_^

 

下一章,我想推薦給你另一個工具,叫Cargo。這是一個用於工做中rust編程。rustc編譯器對簡單的東西比較友好,可是若是你的項目增加,你會須要一個幫助你去管理全部選項,而且讓你很是容易分享你的代碼給其餘的人。

相關文章
相關標籤/搜索