Tratamento de Erros do 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 requer profundidade > 0")); } Ok("Sucesso!".into()) }

Speaker Notes

  • As funçÔes Rust que retornam Result sĂŁo traduzidas para exceçÔes no lado C++.
  • A exceção lançada sempre serĂĄ do tipo rust::Error, que expĂ”e principalmente uma maneira de obter a string da mensagem de erro. A mensagem de erro virĂĄ da implementação Display do tipo de erro.
  • Um pĂąnico propagando do Rust para o C++ sempre farĂĄ com que o processo