# Rust 環境建置 ###### tags: `Rust` > 本文<font color=orange size=4>僅提出必要概念和與常見語言的差異部分</font>, 將假設讀者認識 C/C++, 並簡單理解現代流行語言 (如 Java、C#、JavaScript/TypeScript) 的特色 (物件導向、泛型、例外處理、基本資料結構、模組化等), 不過當然也可以遇到不知道的概念時去查查 `:)` <!-- > 整體會依照 [Rust编程语言入门教程](https://www.bilibili.com/video/BV1hp4y1k7SV) 進行, 其 --> > 使用的參考書是官方的書籍: [The Rust Programming Language](https://doc.rust-lang.org/book/), 輔以我的心得與上網查詢的其他資料, 我會盡可能達到可以僅閱讀此文檔來學會 Rust 語言的程度。 ## Rust 常用指令 - Update ```Rust rustup update ``` - Uninstall ```Rust rustup self uninstall ``` - Check version ```Rust rustc --version cargo --version ``` > 題外話:cargo 的意思是「貨物」 以上指令會得到... `rustc.x.y.z (COMMIT_HASH, COMMIT_DATE)` `cargo.x.y.z (COMMIT_HASH, COMMIT_DATE)` - Offline Document 直接在瀏覽器上開啟離線文本。 ```Rust rustup doc ``` > 超香 `:)` > Dependency 滑鼠懸停就可查詢文檔這點更香, 詳見 [toml](#基本檔案結構) ## Build <font size=3>(take `Hello World` for example)</font> ### Code ```Rust= /** * file name : hello_world.rs * 以小寫單字用底線串聯為命名習慣 **/ fn main() { println!("Hello World!"); // tab 為四個空格 } ``` 小小解釋: 1. `fn` : 函式 2. `main` : 主函式, 必最先執行 3. `println!` : `Rust Macro` 之一, 與函式的區別在是否加 `!` ### Compile (`rustc`) ```Rust rustc FILE_NAME.rs ``` 會發現在 Windows 下會多一個 `.pdb` 檔 (除錯訊息), 與可以直接運行的 `.exe` 檔 ![](https://i.imgur.com/1JJhrR3.jpg) > 這是對小型程式而言... > 我相信沒人寫 Java、TypeScript Project 時會想要一個個編/轉譯吧... ### Build a Project (`cargo`) `Cargo` 之於 Rust 就如同 `Maven/Spring/Gradle` 之於 `Java`、`npm` 之於 `TS/JS`, 對整個專案的編譯、打包、引入依賴的庫等操作。 #### 專案指令 1. New Project ```rust cargo new PROJECT_NAME ``` 2. Build Project ```rust cargo build ``` 編譯好的檔案在 `target/debug` 目錄下。 發布時, 可加上引數 `--release`, 對程式碼執行編譯最佳化 (想當然編譯時間會更長)。 此時編譯好的檔案會在 `target/release` 目錄下。 <details> <summary> 普通 Build 與加 --release 的目錄結構長相 </summary> ![](https://i.imgur.com/yxMxaB1.jpg) </details> 3. Build and Run Project ```rust cargo run ``` > 若已經編譯過且未修改原始碼, 會跳過編譯階段直接運行。 4. JUST Check 此指令僅<font color=cd5c5c>確保能通過編譯</font>。 ```rust cargo check ``` > 跟 `cargo build` 比起來快很多, 十毫秒掃十六個檔案不在話下。 5. Update dependencies ```rust cargo update ``` 這將會將依賴的版本<font color=orange>升級到預設大版本下的最高小版本</font>, 可見於 `Cargo.lock`。 > 欲更新依賴的大版本, 修改 Cargo.toml 的版本號即可。 #### 基本檔案結構 ![](https://i.imgur.com/j3xrG8P.jpg) 1. `Cargo.toml` ~~pom.xml~~ ![](https://i.imgur.com/eGtk1Kx.jpg) `TOML = Tom's Obvious, Minimal Language` ([Tom 就是此設定檔的發明者](https://zh.wikipedia.org/wiki/TOML)) 宗旨是簡單易用。 注意:<font color="#cd5c5c">Dependencies 在 Rust 裡稱為</font> <font size=4>`crate`</font> > 題外話:crate 的意思是箱子 > 可以在 <https://crates.io/crates/> 找到各種 `crates` 2. `Cargo.lock` 自動追蹤 Dependencies 的版本, 可以保證咱的程式碼<font color=orange>到哪處都可以重現</font> (引用相同版本的依賴)。 > 沒事不用改它。
{"metaMigratedAt":"2023-06-17T16:03:17.226Z","metaMigratedFrom":"Content","title":"Rust 環境建置","breaks":true,"contributors":"[{\"id\":\"646bc1c5-da08-4ef1-a5ae-7281c8271532\",\"add\":2902,\"del\":1}]"}
Expand menu