錯誤處理

#[cxx::bridge] mod ffi { extern "Rust" { fn fallible(depth: usize) -> Result<String>; } } fn fallible(depth: usize) -> anyhow::Result<String> { if depth == 0 { return Err(anyhow::Error::msg("fallible1 requires depth > 0")); } Ok("Success!".into()) }

Speaker Notes

  • 傳回 Result 的 Rust 函式會轉譯為 C++ 端的例外狀況。
  • 擲回的例外狀況一律屬於 rust::Error 類型,這主要用來公開取得錯誤訊息字串的方法。錯誤訊息會來自錯誤類型的 Display 實作項目。
  • 從 Rust 恐慌解開至 C++ 一律會導致程序立即終止。