看板 Marginalman 關於我們 聯絡資訊
: 從入門到入門 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 = { loop { 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執行特定次數 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.48.170 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1742363591.A.01E.html
CureSky: 我都用structured binding 不用tie 03/19 14:01
我沒C++17用 好恨 ※ 編輯: yam276 (114.32.48.170 臺灣), 03/20/2025 09:59:17