مدیریت خطا 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 به عمق > 0 نیاز دارد")); } Ok("Success!".into()) }

Speaker Notes

  • توابع Rust که «نتیجه» را برمی‌گردانند به exceptionهای سمت ++C ترجمه می‌شوند.
  • این exception به وقوع پیوسته همیشه از نوع rust::Error خواهد بود که در درجه اول راهی برای دریافت string پیام خطا نشان می‌دهد. پیغام خطا از نوع خطایDisplay می‌آید.
  • باز شدن panic از Rust به ++C همیشه باعث می‌شود که فرآیند بلافاصله خاتمه یابد.