Manejo de Errores en 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 requiere una profundidad > 0")); } Ok("Correcto.".into()) }

Speaker Notes

  • Las funciones de Rust que devuelven Result se convierten en excepciones en C++.
  • La excepción que se genera siempre será del tipo rust::Error, que muestra principalmente una forma de obtener la cadena del mensaje de error. El mensaje de error procede de la implementación Display del tipo de error.
  • Si un pánico pasa de Rust a C++, el proceso siempre finalizará inmediatamente.