今天我們來開一個新系列。
從零學習rustlang。
簡單介紹下rustlang:
Rust 是一門系統級編程語言,被設計為保證內存和線程安全,防止段錯誤產生。作為系統級編程語言,它的基本理念是 “零開銷抽象”。理論上來說,它的速度與 C/C++ 同級。Rust 可以被歸為通用的、多范式、編譯型的編程語言,類似 C/C++。與這兩門編程語言不同的是,Rust 是線程安全的!Rust 編程語言的目標是,創建一個安全和並發的軟件系統。它強調安全性、並發和內存控制。盡管 Rust 借用了 C/C++ 的語法,卻杜絕了空指針和懸掛指針,而這二者是 C/C++ 中系統崩潰、內存泄露和不安全代碼的根源。
雖然 Rust 是一門系統級編程語言,但並不意味着它只能寫底層程序(操作系統、驅動、工具、數據庫、搜索引擎等),它的抽象層次之高完全給人驚艷的感覺,實踐證明它對問題建模的能力和方便性不比 C++/Java/Python/Ruby 差。但 Haskell 這類超高抽象語言,也不是 Rust 的發展方向。Rust 力求在抽象與現實世界中找到一個平衡
關於rust的一切。不多說,只在這里說一句:Rust 已經在 StackOverflow 的年度語言評選中,連續 4 年榮獲“程序員最喜愛語言”第一名(2016, 2017, 2018, 2019)。
好吧,開始我們的學習。
1)安裝。
參考官網:https://www.rust-lang.org/zh-CN/tools/install
2)工具。
這里用vscode。
這里推薦的rust的插件有:
Cargo:Rust 的構建工具和包管理器
您在安裝 Rustup 時,也會安裝 Rust 構建工具和包管理器的最新穩定版,即 Cargo。Cargo 可以做很多事情:
cargo build可以構建項目cargo run可以運行項目cargo test可以測試項目cargo doc可以為項目構建文檔cargo publish可以將庫發布到 crates.io。
要檢查您是否安裝了 Rust 和 Cargo,可以在終端中運行:
cargo --version
要詳細研究cargo可以到這里:https://doc.rust-lang.org/cargo/index.html
b.)創建新項目
我們將在新的 Rust 開發環境中編寫一個小應用。首先用 Cargo 創建一個新項目。在您的終端中執行:
cargo new hello-rust
這會生成一個名為 hello-rust 的新目錄,其中包含以下文件:
hello-rust
|- Cargo.toml
|- src
|- main.rs
Cargo.toml 為 Rust 的清單文件。其中包含了項目的元數據和依賴庫。
src/main.rs 為編寫應用代碼的地方。
cargo new 會生成一個新的“Hello, world!”項目!我們可以進入新創建的目錄中,執行下面的命令來運行此程序:
cargo run
您應該會在終端中看到如下內容:
$ cargo run
Compiling hello-rust v0.1.0 (/Users/ag_dubs/rust/hello-rust)
Finished dev [unoptimized + debuginfo] target(s) in 1.34s
Running `target/debug/hello-rust`
Hello, world!
b.)添加依賴
現在我們來為應用添加依賴。您可以在 crates.io,即 Rust 包的倉庫中找到所有類別的庫。在 Rust 中,我們通常把包稱作“crates”。
在本項目中,我們使用了名為 ferris-says 的庫。
我們在 Cargo.toml 文件中添加以下信息(從 crate 頁面上獲取):
[dependencies]
ferris-says = "0.1"
接着運行:
cargo build
…之后 Cargo 就會安裝該依賴。
運行此命令會創建一個新文件 Cargo.lock,該文件記錄了本地所用依賴庫的精確版本。
要使用該依賴庫,我們可以打開 main.rs,刪除其中所有的內容(它不過是個示例而已),然后在其中添加下面這行代碼:
use ferris_says::say;
這樣我們就可以使用 ferris-says crate 中導出的 say 函數了。在 main.rs 中添加以下代碼:
use ferris_says::say; // from the previous step
use std::io::{stdout, BufWriter};
fn main() {
let stdout = stdout();
let out = b"Hello fellow Rustaceans!";
let width = 24;
let mut writer = BufWriter::new(stdout.lock());
say(out, width, &mut writer).unwrap();
}
保存完畢后,我們可以輸入以下命令來運行此應用:
cargo run
如果一切正確,您會看到該應用將以下內容打印到了屏幕上:
----------------------------
| Hello fellow Rustaceans! |
----------------------------
\
\
_~^~^~_
\) / o o \ (/
'_ - _'
/ '-----' \
如果你能看到最后的打印結果。
那么恭喜你,你已經可以寫rust的代碼了。
最近rustlang官網,已經沒有被牆了。如果你發現有被牆的現象或遇到什么問題,歡迎加入:rust新手群,在這里我可以提供一些簡單的幫助,加微信:360369487,注明:博客園+rust
