Rust簡明學習手冊 - Rust安裝和基本概念
前言
好久沒學新語言了,最近打算學學Rust並記錄一下Rust的要點,方便後期給自己參考。
快速安裝
Macos | Linux
curl --proto '=https' --tlsv1.3 http://sh.rustup.rs -sSf | sh
Windows
安裝包下載地址
Visual Studio Code 外掛
搜尋安裝rust-analyzer
即可
快速建立rust專案
cargo new 專案名稱
專案結構如下
專案根目錄
- src
- main.rs
Cargo.toml
src
下是原始碼,Cargo.toml
配置了專案的依賴,版本號等資訊,cargo
是rust的包管理工具
執行rust程式碼
通過Cargo建立的專案可以直接在專案根目錄下執行
cargo run
如果單獨建立一個rust原始碼檔案,則可以使用rustc編譯,然後手動執行編譯產物
rustc app.rs && ./app
變數
定義
let int_var = 222;
int_var = 100; // error!
直接使用let定義時,變數不可被更改,增加mut
才可以修改
let mut int_var = 222;
int_var = 100; // ok
作用域
變數只在當前作用域生效,作用域的定義類似於C,比如函式,控制語句的Body。當前作用域定義的同名變數可以覆蓋父作用域的相應變數。
fn function() {
let int_var = 100; // 只在函式內部生效
if true {
let int_var = 20;
// 這裡訪問到的int_var則是20
}
}
常量
const THIS_IS_A_CONST: i64 = 10 * 200;
常量需要明確指定型別,由const
修飾,賦值表示式只能是編譯時可計算出結果的。
方法
定義
fn function_name(param1: Type, param2: Type) -> ReturnType {
return xxx;
// or
xxx
}
由關鍵字fn
開頭,引數列表由逗號隔開,引數名在前,型別追加在冒號後面,返回值型別在->
符號後拼接。返回值可以使用return返回,也可以不寫return,但是注意分號也要去掉。
呼叫
分為兩種呼叫方式,類似於其他語言的類方法和例項方法,具體會在介紹mod時詳細展開
xxx::classFunc()
xxx.instancFunc()
資料型別
種類
- 整型:分為iXX和uXX系列,XX支援8,16,32,64,128,直接十六進位制(0x),八進位制(0o),二進位制(0b),Byte(b'A')。預設i32
- 浮點型:f32和f64,預設f64
- 布林值:bool,true或者false
- 字元:char,支援多位元組字元,包括表情
- tuple:元組,例如
let tup: (i32, f64, u8) = (500, 6.4, 1);
- 陣列:
let arr = [1, 2, 3, 4, 5];
雖然rust是強型別語言,但如果編譯器能推匯出來型別,我們定義變數時都可以忽略型別,這個和目前很多現代語言類似
let int_var = 222; // 這裡不用寫i32
let int_var = xxx::funcReturnInt32Var(); // 這裡不用寫i32
註釋
單行
// hello, world
多行
文件上沒有說這種註釋方式,但是我試了一下的確可以
/*
Name:func
Param: arg1
*/
流程控制語句
if
``` // 常規的if else if a < 5 {
} else if b == 6 {
} else {
}
// 對標三目操作符 let a = if b==0 {someval} else {otherval}; ```
loop
loop {
// 永遠執行
}
loop的break不僅退出迴圈,還可以返回一個值
let val = loop {
...
break some_val;
}
while
和其他語言的while
類似
while a < 5 {
...
break;
}
for
和其他語言的for
類似,對陣列或者其他可迭代的物件進行元素遍歷
```
for item in arr {
} ```