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
deResult<T, E>
puede:- Devolverse a través de parámetros externos (por ejemplo, mediante
&mut T
). Esto requiere queT
se pueda transferir a través del límite de FFI. Por ejemplo,T
tiene que ser:- Un tipo primitivo (como
u32
ousize
). - Un tipo compatible de forma nativa con
cxx
(comoUniquePtr<T>
) que tiene un valor predeterminado adecuado para usarlo en caso de fallo (a diferencia deBox<T>
).
- Un tipo primitivo (como
- 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 enUniquePtr<T>
.
- Devolverse a través de parámetros externos (por ejemplo, mediante
-
La parte
E
deResult<T, E>
puede:- Devolverse como un valor booleano (por ejemplo,
true
representa el éxito yfalse
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.
- Devolverse como un valor booleano (por ejemplo,