第一步要做的事情是
安裝Rust編譯環境(人人都有的windows)
咱工作機器是win7+mingw
所以直接到下面的鏈接下載Windows ([GNU ABI ?]) (.msi)就好
https://www.rust-lang.org/en-US/downloads.html
安裝完成后在mingw里輸入"rustc --version"檢查安裝是否成功
如果安裝成功會看到以下輸出
該來的總會來
Hello World
總之先創建一個放代碼的文件夾
$ mkdir hello_world
$ cd hello_world
Rust源文件的后綴名是“.rs”,所以咱們現在要創建一個叫“main.rs”的文件然后把下面的代碼放到里面。
fn main()
{
println!("Hello world!");
}
- 第一行代碼定義了一個沒有參數沒有返回值的函數main,因為咱主業是搞c++,無返回值的函數前面沒有void還是感覺有點怪。
- 第二行和最后一行是大括號把函數的實現代碼包起來,這沒啥好說的。
- 第三行,這一行把hello world輸出到屏幕,名字很直觀print line;說起來官方的文檔上特別強調縮進是4個空格,不要用tab,咱還以為用tab會有啥問題,特意試了下并沒有啥功能上的區別能編能跑,果然還是強調碼規范吧。值得一提的是,println!()這樣表示調用的是Rust的宏,是meta編程的實現方式,如果去掉‘!’就是直接調用函數了。關于Rust宏的部分咱還沒看到,總之慢慢來_(:з」∠)_。最后用‘;’結尾,因為咱主業是搞c++,咱覺得這很合理。
接下來咱們就要編了
$ rustc main.rs
運行完這個命令后同級目錄下會出現一個main.exe,Linux或者mac就直接是main了,運行它!
然后咱們會看到
總要搞個大項目
Cargo 碉堡了!
Cargo是Rust的包管理器和構建系統,能編咱們的工程,還能下載咱們工程依賴的庫,還能編咱們下載下來的依賴庫!因為咱還搞過iOS,咱覺得cocoapods很方便,看到Cargo有這功能咱很欣慰。
一般來說通過安裝包安裝Rust編譯環境的都自帶了Cargo,運行下面的命令來檢查Cargo是否正常
$ cargo --version
如果成功咱們會看到
接下來咱們用Cargo重新編譯Hello world,但是咱們的工程文件夾目前的結構不是很合適,要稍微挪一挪
$ mkdir src
$ mv ./main.rs src
$ rm ./main.exe
在hello_world目錄下創建一個文件,命名為Cargo.toml,注意C務必要大寫。
這是一個TOML文件,用起來有點像INI,但是更強大(其實咱也沒怎么用過_(:з」∠)_)。
接著把下面的代碼寫入Cargo.toml
[package]
name = "hello_world"
version = "0.0.1"
authors = [ "Your name <you@example.com>" ]
[package]表示接下來的都是用來配置package的部分,接下來的三行配置程序名稱、程序版本以及作者。
保存好后咱們開始build
$ cargo build
如果build成功咱們會看到
運行!
$ ./target/debug/hello_world.exe
換著法兒運行!
$ cargo run
要快,要Release
輸入以下命令來編Release版本,編譯Release版本會讓咱們的程序跑的更快,但是編譯起來會更慢。
$ cargo build --release
Cargo.lock是神馬
在使用Cargo編譯完咱們的工程后在咱們工作路徑下會多出一個文件“Cargo.lock”
里面的內容看起來應該是這個樣子:
[root]
name = "hello_world"
version = "0.0.1"
Cargo用這個文件來跟蹤咱們工程中的各種依賴。因為咱們寫的hello_world沒有任何依賴,所以咱們的Cargo.lock看起來超簡單。在實際工作中咱們一般不用碰這個文件,一切交給超厲害的Cargo就好。
論如何輕松痛快的創建新項目
懶是推動科技發展的最強大的力量——孔子
超懶的咱要用Cargo new來輕松創建新項目
$ cargo new hello_worldex --bin
new之后跟的第一個參數是新項目路徑,--bin表示這個新建項目是一個可執行程序。
運行完上面那條命令后,就會發現當前目錄下多了一個hello_worldex文件夾。
該文件夾中包含一個Cargo.toml 和一個src文件夾
打開Cargo.toml看看,……居然自動添加了咱的名字……
[package]
name = "hello_worldex"
version = "0.1.0"
authors = ["Renzhi"]
[dependencies]
咱們還會在src中找到自動生成的main.rs
內容如下
fn main() {
println!("Hello, world!");
}
居然寫好了hello world……咱很欣慰