Rust學(xué)習(xí)筆記-01

0. Rust的源文件

像c語言的源文件我們以".c"為后綴,c++以".cpp"為后綴,java以".java"為后綴。Rust的源文件也不例外,它們總是以".rs"為后綴名。和Java的多個單詞用駝峰命名規(guī)則不同,Rust語言多個單詞我們通常用下劃線進(jìn)行連接(hello_world.rs)。

1. Hello world!

我們學(xué)習(xí)任何語言,都是從Hello world開始的。當(dāng)然我們學(xué)習(xí)Rust也不例外。

首先執(zhí)行以下命令:

$ cd ~
$ mkdir hello_world
$ cd hello_world

我們在用戶跟目錄下創(chuàng)建了 hello_world 文件夾,緊接著我們進(jìn)入到我們創(chuàng)建的文件夾目錄中,接下來我們來創(chuàng)建一個 main.rs 源文件,內(nèi)容為:

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

保存文件,只需要輸入如下命令:

$ rustc main.rs
$ ./main
Hello world!

我們就可以在命令行窗口內(nèi)看到我們輸出的 Hello world!字符串了。

2.來看看我們具體都做了哪些事情

fn main() {
    
}

這幾行代碼定義了一個Rust函數(shù)。和其他語言一樣,Rust也是以main函數(shù)為程序的入口。
在main函數(shù)中:

println!("Hello world!");

這里和我在學(xué)習(xí)c語言和Java編程語言時不太一樣,在c語言中,我們的hello world程序首先要引入相關(guān)的頭文件。

#include <stdio.h>

之后,我們在程序中調(diào)用:

printf("Hello world!\n");

但是在我們剛才編寫的Rust代碼中,細(xì)心的同學(xué)可以發(fā)現(xiàn),在 "println"之后有一個 "!"。這其實是一個Rust宏,現(xiàn)在我們只需要記住,在Rust代碼中我們見到"!"的時候,就代表調(diào)用了一個宏而不是一個普通函數(shù)。
和Java、c語言一樣,Rust代碼以 ";"作為語句結(jié)束。

3. 編譯和運行

在運行一個Rust程序之前,我們必須編譯它。可以輸入 rustc 命令來使用Rust編譯器

$ rustc main.rs

在執(zhí)行完這一步后,我們用 ls 命令可以發(fā)現(xiàn):

$ ls
main  main.rs

其中main文件就是我們編譯后的可執(zhí)行文件了。這個時候,我們使用命令:

$ ./main

就可以讓我們的程序運行起來。

Rust 是一種 預(yù)編譯語言(ahead-of-time compiled language),程序編譯好后,把它給任何人,他們都不需要安裝 Rust 就可運行。

4. Cargo

Cargo 是 Rust 的構(gòu)建系統(tǒng)和包管理工具,它負(fù)責(zé)三個工作:

  • 構(gòu)建代碼
  • 下載依賴庫
  • 編譯代碼

絕大部分 Rust 項目使用 Cargo,我們可以使用命令:

$ cargo --version

來檢查Cargo的安裝配置情況,如果你是使用Rust官方安裝包的話,Rust自帶了Cargo。

使用Cargo構(gòu)建一個項目通常需要做三件事:

  1. 將源文件放到正確的目錄
  2. 刪除舊的可執(zhí)行文件
  3. 創(chuàng)建一個Cargo配置文件

回到我們的 hello_world 目錄

$ mkdir src
$ mv main.rs src/main.rs
$ rm main

在 hello_world 目錄下創(chuàng)建一個 Cargo.toml 文件(大小寫敏感,否則Cargo識別不到)。這個文件使用TOML(Tom's Obvious, Minimal Language)格式。 TOML 類似于 INI,不過有一些額外的改進(jìn)之處,并且被用作 Cargo 的配置文件。配置內(nèi)容如下:

[package]
name = "hello world"
version = "0.0.1"
authors = ["your name"]

第一行的[package]表明下面的語句用來配置一個包。隨著我們在這個文件增加更多的信息,我們會增加其他部分,不過現(xiàn)在,我們只有包配置。

另外三行設(shè)置了 Cargo 編譯你的程序所需要知道的三個配置:包的名字,版本,和作者。

Ok,保存完成后,我們執(zhí)行以下命令:

$ cargo build
Compiling hello_world v0.0.1 (file:///Users/zhaoliangtai/rust_projects/hello_world)
$ ./target/debug/hello_world
Hello world!

執(zhí)行完成后我們可以看到,我們程序已經(jīng)運行起來了。和Android開發(fā)者在使用gradle的時候類似,默認(rèn)為我們生成了debug程序。當(dāng)然我們也可以使用命令:

$ cargo run

來直接構(gòu)建、編譯、運行我們的程序。
Cargo 檢查任何項目文件是否被修改,并且只會在你上次構(gòu)建后修改了他們才重新構(gòu)建。
我們也可以使用:

$ cargo build --release

來優(yōu)化編譯項目,這些優(yōu)化可以讓 Rust 代碼運行的更快,不過啟用他們會讓程序花更長的時間編譯。這也是為何這是兩種不同的配置,一個為了開發(fā),另一個構(gòu)建提供給用戶的最終程序(和gradle很像)。

5. Cargo.lock是什么?

細(xì)心的同學(xué)可能發(fā)現(xiàn)了,在我們配置完配置文件并執(zhí)行Cargo命令后,在我們的項目根目錄下多了一個 "Cargo.lock" 文件

[[package]]
name = "hello_world"
version = "0.0.1"

Cargo 用Cargo.lock文件跟蹤你程序的依賴。這里是 Hello World 項目的Cargo.lock文件。這個項目并沒有依賴,所以內(nèi)容有一點稀少。

6. 創(chuàng)建新Cargo項目的簡單方法

$ cargo new hello_world --bin

這個命令傳遞了--bin參數(shù)因為我們的目標(biāo)是直接創(chuàng)建一個可執(zhí)行程序,而不是一個庫。可執(zhí)行文件通常叫做二進(jìn)制文件(因為它們位于/usr/bin,如果你使用 Unix 系統(tǒng)的話)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多,請查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,224評論 1 19
  • 第一步要做的事情是 安裝Rust編譯環(huán)境(人人都有的windows) 咱工作機(jī)器是win7+mingw所以直接到下...
    _AKI_Peroro_閱讀 2,039評論 0 1
  • “行走,是生命對世界的探尋,是人生對生命的一種追求。” 路漫漫,天空時常籠罩著不知是晨霧還是霧霾,銘子邁步...
    橋梁紐帶閱讀 509評論 0 1
  • Hello everydody ! 很高興成為簡書新成員,在簡書,我們還是剛剛相識的朋友,希望日后我們可以多多加深...
    為你讀詩閱讀 152評論 0 0