一、Cargo簡介
- Cargo 是Rust語言的包管理工具,它幫助我們管理我們項目的依賴。
- 做js開發的同學應該了解nodejs的包管理工具npm,Cargo和npm做的事情是一樣的。
- C和C++的同學可能對這個就比較陌生了,C/C++語言沒有統一的依賴管理工具,各個項目用的依賴管理工具不僅相同。有用Cmake的,也有用GN的。
二、Cargo基本用法
cargo new hello_world
創建新項目。cargo build
編譯。cargo run
編譯和運行。
三、為什么要有Cargo
- 在Rust語言中一個庫或者一個可執行文件,被稱為crate。Crate是通過rustc工具編譯出來的。
rustc hello.rs
可以直接通過rustc編譯rust文件。 - 如果所有文件的編譯都使用rustc來編譯,文件比較多的時候,這個編譯命令就會越來越多,并且如果文件依賴比較復雜,那么編譯命令就會變得更加復雜。在C/C++里面可以理解成直接使用gcc/g++命令來編譯整個項目。
- 所以為了更加方便的管理項目之間的依賴,就有了Cargo工具。
四、Cargo做了什么
- 為了達成上述目標,Cargo做了四件事情:
- 引入了兩個元數據文件,里面包含一些包信息。
- 獲取并構建包的依賴項。
- 使用正確的參數用
rustc
或者其他構建工具來構建包。 - 提供使得rust包更容易使用的約定。