Rustのエラー処理

#[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++ にパニック アンワインドを行うと、プロセスは必ず直ちに終了します。