Comprehensive Rust(繁体中文)
. . . . . . . . . . . . . . . . . . 159 VIII 第 4 天:下午 162 28 Welcome Back 163 29 錯誤處理 164 29.1 恐慌 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 29.2 疊代器 . . 「不會出現未定義的執行階段行為 (undefined runtime behavior)」- Rust 陳述式的行為一律會 有定義 – 陣列存取行為會經過邊界檢查。 – 整數溢位的行為是明確的 (恐慌或迴繞)。 • 「現代化的語言特徵」- 具表現力且符合人因工程學的高階語言 – 列舉和模式配對。 – 泛型。 – 沒有 FFI 負擔。 – 零成本的抽象化機制。 – 更好的編譯錯誤描述。 – 內建依附元件管理工具。 中, 「有號」整數的溢位現象實際上並未定義,而且在不同的平台或編 譯器上可能有不同行為。但在 Rust 中,整數溢位會經過定義。 將 i32 變更為 i16,即可查看整數溢位現象,這在偵錯版本中會造成恐慌 (checked),並納入發 布子版本中。此外,Rust 還提供溢位、飽和與進位等其他選項,可透過方法語法存取,例如 (a * b).saturating_add(b * c).saturating_add(c0 码力 | 358 页 | 1.41 MB | 10 月前3Comprehensive Rust(繁体中文) 202406
. . . . . . . . . . . . . . . . . . 157 VIII 第 4 天:下午 160 28 Welcome Back 161 29 錯誤處理 162 29.1 恐慌 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 29.2 疊代器 . . 「不會出現未定義的執行階段行為 (undefined runtime behavior)」- Rust 陳述式的行為一律會 有定義 – 陣列存取行為會經過邊界檢查。 – 整數溢位的行為是明確的 (恐慌或迴繞)。 • 「現代化的語言特徵」- 具表現力且符合人因工程學的高階語言 – 列舉和模式配對。 – 泛型。 – 沒有 FFI 負擔。 – 零成本的抽象化機制。 – 更好的編譯錯誤描述。 – 內建依附元件管理工具。 中, 「有號」整數的溢位現象實際上並未定義,而且在不同的平台或編 譯器上可能有不同行為。但在 Rust 中,整數溢位會經過定義。 將 i32 變更為 i16,即可查看整數溢位現象,這在偵錯版本中會造成恐慌 (checked),並納入發 布子版本中。此外,Rust 還提供溢位、飽和與進位等其他選項,可透過方法語法存取,例如 (a * b).saturating_add(b * c).saturating_add(c0 码力 | 356 页 | 1.41 MB | 1 年前3Comprehensive Rust(简体中文) 202412
just in the standard library. • unwrap 会返回 Option 或 panic 中的值。expect 方法与此类似,但其使用错误消息。 – 出现 None 时您或许会恐慌,但不能“无意中”忘记检查是否为 None 的情况。 – 在草拟阶段的编程中,频繁使用 unwrap/expect 进行处理十分常见,但在正式版代码时,通 常以更为妥当的方式处理 None 的情况。0 码力 | 359 页 | 1.33 MB | 10 月前3
共 3 条
- 1