Re: [閒聊] Rust: 從入門到入門

作者: yam276 ('_')   2025-03-19 13:53:09
: 從入門到入門
1. String 與 &str
Rust的String儲存資料到Stack跟Heap
存在Stack的資料包含指標、字串長度、可儲存字元容量
Heap才儲存字串本體 存取從Stack的指標去Heap找本體
&str只是一段指向String片段的指標
只包含指標與字串長度 不擁有字串內容與所有權
Rust編譯器會確保&str可用
具體作法是 編譯階段確認&str使用時 目標String還沒被釋放
如果目標String已經被釋放 會編譯失敗
2. Tuple
比C++好用
殘忍比較:
Rust:
let x = tup.0; // 取出第一個元素
let tup = (42, 3.14, 'a'); // 編譯器知道這是 (i32, f64, char)
let (x, y, z) = tup; // 可以直接賦予
let unit = (); // 空Tuple 這個C++沒有
C++:
// 取出第一個元素
auto x = std::get<0>(tup);
// 需要顯式指定,或者用auto搭配make_tuple
auto tup = std::make_tuple(42, 3.14, 'a');
// 要用tie賦予
int x;
double y;
char z;
std::tie(x, y, z) = tup;
3. 語句(Statement)與表達式(Expression)
語句沒回傳值 表達式有
{}也是表達式 可以拿來做奇妙操作
4. loop
let mut counter = 0;
let result = {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
則result = 10 * 2 = 20
'label_1: loop {
// ...
loop {
// ...
break 'label_1 // 直接跳出最外面的
}
}
5. for range
for num in (1..4) {
// num = 1, 2, 3 共三次
}
可以讓for執行特定次數
作者: CureSky (ソラ・ハレワタール)   2025-03-19 14:01:00
我都用structured binding 不用tie

Links booklink

Contact Us: admin [ a t ] ucptt.com