#[cxx::bridge]
mod ffi {
unsafe extern "C++" {
include!("example/include/example.h" );
fn fallible (depth: usize ) -> Result <String >;
}
}
fn main () {
if let Err (err) = ffi::fallible(99 ) {
eprintln!("Erro: {}" , err);
process::exit(1 );
}
}
Speaker Notes
As funçÔes C++ declaradas para retornar um Result
capturarão qualquer exceção lançada no lado C++ e a retornarão como um valor Err
para a função
Se uma exceção for lançada de uma função externa âC++â que nĂŁo Ă© declarada pela bridge CXX para retornar Result
, o programa chama std::terminate
do C++. O comportamento é equivalente à mesma exceção sendo lançada por meio de uma função noexcept
C++.