2.3 Hello,Cargo

原文地址http://doc.rust-lang.org/book/hello-cargo.htmlhtml

 cargo是一個rust開發者用來管理他們項目的工具。Cargo當前穩定是pre-1.0版本,而且它仍在不斷地進步中。可是它如今能夠用來管理大多的rust項目,因此咱們打算rust項目都用cargo工具做爲開始。git

 

cargo管理三樣東西:創建你的代碼,下載你代碼依賴的東西而且創建依賴。首先,你的程序若是不須要任何依賴,咱們將只能使用cargo的第一部分的功能。最終,若是咱們往代碼加更多的東西的話而且咱們一開始就使用cargo,這將會是一件很簡單的事情。程序員

 

若是你經過官方安裝器安裝的話,你已經擁有cargo了。若是你經過其餘的方式去去安裝,你可能須要一些具體的指令去確認你是否已經正確的地安裝。shell

 

轉換成cargo編程

 

讓咱們把Hello World轉換成Cargo吧。ide

 

將咱們的項目轉成cargo形式,咱們只須要作兩件事:建一個Cargo.toml的配置文件並把咱們的源文件放在正確的地方。咱們先來作第一件事:工具

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

注意,由於咱們建立了一個可執行的文件,咱們是經過使用main.rs文件。若是咱們須要創建一個庫文件,咱們就應該使用lib.rs 。傳統的入口文件路徑按照toml定義的規範去寫http://doc.crates.io/manifest.html#configuring-a-target學習

 

cargo但願你的源文件放在src文件目錄裏面。這可使其餘高層次的東西(如readme文檔,許可信息和其餘不相關的信息)遠離你的代碼。cargo能夠幫助你保持咱們對項目清晰整理,一個包含全部東西的地方,全部的東西只會在它該出現的地方出現。優化

 

下一步,咱們的配置文件ui

 $ editor Cargo.toml

 必須確認輸入的名字正確:這是基本的條件。。

 

將下面的東西輸入進去:

 [package]
name = "hello_world"
version = "0.0.1"
authors = [ "Your name <you@example.com>" ]

 這是toml的格式,下面來解析一下其內容

TOML目的是在於作一個可以清晰閱讀而且能夠少許配置的文件,這都源自於其簡單語義。TOML被設計爲一個簡單哈希列表。TOML很是容易轉換成其餘通用語言的數據格式。

 

TOML與INI文件很是類似,但它帶有其餘一些額外的好處。

 

一旦把這個TOML文件創建起來,咱們就能夠隨時準備去編譯!嘗試下這個:

$ cargo build
   Compiling hello_world v0.0.1 (file:///home/yourname/projects/hello_world)
$ ./target/debug/hello_world
Hello, world!

Bam!咱們經過cargo build編譯了咱們的項目,而且運行這個路徑起來(./target/debug/hello_world).咱們也能夠一步到位,請使用cargo run:

 $ cargo run
     Running `target/debug/hello_world`
Hello, world!

注意到咱們這次並無從新編譯項目。cargo已經提醒「大家並無修改過源文件」,因此它僅僅只是運行原來的二進制程序。若是咱們做了修改,咱們會看到下列的場景:

 $ cargo run   Compiling hello_world v0.0.1 (file:///home/yourname/projects/hello_world)     Running `target/debug/hello_world`Hello, world!

這個操做並無比原來咱們使用rustc簡化不少操做,但你試着想一下將來的情景:當咱們的項目變得愈來愈複雜,咱們須要作更多事情僅僅爲了把全部的代碼編譯一邊。可是經過cargo,隨着項目發展,咱們僅僅也只須要cargo build命令運行一邊,而後它就自動幫你完成工做了。

 

當你的項目準備好發行,你可使用cargo build --release的命令去編譯你的項目(帶優化功能)。

 

你也注意到cargo已經幫你建立了一個新的文件:Cargo.lock。

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

這個文件是被cargo用做跟蹤你程序的依賴的。如今咱們的程序並無多少依賴,因此這個文件顯得比較稀疏。你不須要去接觸這個文件,讓Cargo去幫你處理就行了。

 

就這樣,咱們順利經過cargo順利地編譯hello_world程序。儘管咱們如今的程序很是簡單,可是已經使用實際的工具,你可能會在未來rust編程中頻繁的使用。

 

你能夠期待全部的rust項目都使用cargo去開始項目的搭建:

 $ git clone someurl.com/foo
$ cd foo
$ cargo build

一個新的項目

 

你並不用每次開始一個新的項目都完整地按照上述的流程!

Cargo能夠在你開始開發項目的時候創建一個基本骨架項目目錄格式。

 

經過cargo去創建一個新的項目,咱們使用cargo new :

cargo new hello_world --bin

咱們輸入 --bin 選項是由於咱們打算作個二進制的可執行文件:若是咱們只是作一個library,咱們能夠忽略掉這個選項。

 

讓咱們看一下Cargo幫咱們生成了什麼:

 $ cd hello_world
$ tree .
.
├── Cargo.toml
└── src
    └── main.rs
1 directory, 2 files

若是你並無tree這個命令,你也能夠經過你的發行版的包管理器去查看。雖然這不是必須的,可是它看起來很實用。

這就是咱們所用所需的內容了。首要的,咱們檢查一下Cargo.toml:

 [package]
name = "hello_world"
version = "0.0.1"
authors = ["Your Name <you@example.com>"]

Cargo根據你給的參數和你git全局配置,只能地給你toml文件填充默認值。你可能注意到了Cargo同時幫你初始化hello_world目錄做爲git倉庫。

 

接着看一下src/main.rs這個文件裏面有什麼:

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

Cargo已經幫咱們生成好一個「Hello World!」了,Cargo它有一個本身的文檔,裏面介紹了須要Cargo高級的特性。(http://doc.crates.io/guide.html

 

如今咱們把工具放下,真正地區學習Rust語言自己。那裏有不少值得用你的餘生去體會的。

 

你有兩個選擇:進入一個叫「Learn Rust」的項目學習,或者從基本的東西開始學習,經過根據本身的需求"Syntax and Semantics'裏的內容。若是有這更多系統編程經驗的程序員傾向於經過‘Learn Rust’學習。那些從動態語言學習可能會樂於其中。不一樣的人用不一樣的方式學習。用你以爲對的方法去學習。

相關文章
相關標籤/搜索