Manejo de Errores en CXX

La compatibilidad con Result<T,E> de CXX se basa en excepciones de C++, por lo que no podemos usarlo en Chromium. Alternativas:

  • La parte T de Result<T, E> puede:

    • Devolverse a través de parámetros externos (por ejemplo, mediante &mut T). Esto requiere que T se pueda transferir a través del límite de FFI. Por ejemplo, T tiene que ser:
      • Un tipo primitivo (como u32 o usize).
      • Un tipo compatible de forma nativa con cxx (como UniquePtr<T>) que tiene un valor predeterminado adecuado para usarlo en caso de fallo (a diferencia de Box<T>).
    • Mantenerse en el lado de Rust y mostrarse mediante referencia. Esto puede ser necesario cuando T es un tipo de Rust, que no se puede transmitir mediante el límite de FFI ni se puede almacenar en UniquePtr<T>.
  • La parte E de Result<T, E> puede:

    • Devolverse como un valor booleano (por ejemplo, true representa el éxito y false representa el error).
    • En teoría, es posible conservar los detalles de los errores, pero hasta ahora no se ha necesitado en la práctica.