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