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())
}
  • 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.