原文地址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’學習。那些從動態語言學習可能會樂於其中。不一樣的人用不一樣的方式學習。用你以爲對的方法去學習。