選擇Rust作為第一個想要學習的語言,是因為它的宣傳廣告做的好:
“Rust是一種系統(tǒng)編程語言。 它有著驚人的運行速度,能夠防止段錯誤,并保證線程安全?!?---- Rust官網(wǎng)
作為一個被C++程序開發(fā)中千奇百怪的Bug折磨了十年的人來說,安全真是奢望,因而萌生了學習Rust的欲望。Rust看得出來吸收了許多其他語言特性和不少的工程開發(fā)經(jīng)驗。由于我自己還在摸索中,所以只能以流水賬的方式來記錄自己的感受。
今天先看工程組織方式。
C++中組織工程的方式有許多種,比如VS的Solution,Xcode的xcodeproj,Qt的qmake,還有CMake,Makefile等等?,F(xiàn)在越來越多的開源庫都使用CMake這個工具來組織工程,好處是通過CMake提供的各種FindModule,來自動配置第三方庫的依賴,和生成對應IDE的Solution,給跨平臺開發(fā)帶來極大的便利。
Rust中提供的工程組織工具名字叫Cargo,由Rust官方提供,地位好比嫡子,比CMake這種庶子應該要牢靠不少。通過Cargo可以很方便的新建工程。
$ cargo build hello --bin
這樣就創(chuàng)建了一個可執(zhí)行程序項目。我們看下它的目錄結(jié)構(gòu):
- src -
main.rs
- Cargo.toml
- Cargo.lock
其中最關鍵的是Cargo.toml,看起來和cmake地位差不多。
[package]
name = "rust_geometry"
version = "0.1.0"
authors = ["jiangtengfei <jiangtengfei@shining3d.com>"]
[dependencies]
仔細閱讀了cargo的官方guide,發(fā)現(xiàn)cargo相比cmake更加優(yōu)秀:
- 第三方庫依賴關系的處理。cargo能妥善得解決第三方庫的版本問題。使用Cargo.lock與Cargo.toml兩個文件,后者是用戶維護,前者由cargo根據(jù)Cargo.toml生成。用戶可以在Cargo.toml中手動指定需要的庫版本號,也可以由cargo來獲取最新的版本號。無論是手動還是自動方式,準確的版本號都會記錄在Cargo.lock文件中。
- rust有一個官方的包管理平臺,雖然上面的庫都由開發(fā)者自發(fā)提供,質(zhì)量不一定能保證,但是擁有統(tǒng)一的包管理機制就比C++要強許多,也能減少許多麻煩。