Tratamento de Erros do CXX
O suporte do CXX para Result<T,E>
depende de exceções C++, portanto, não podemos usá-lo no Chromium. Alternativas:
-
A parte
T
deResult<T, E>
pode ser:- Retornado via parâmetros de saída (por exemplo, via
&mut T
). Isso requer queT
possa ser passado pela fronteira FFI - por exemplo,T
tem que ser:- Um tipo primitivo (como
u32
ouusize
) - Um tipo suportado nativamente por
cxx
(comoUniquePtr<T>
) que tem um valor padrão adequado para usar em um caso de falha (ao contrário deBox<T>
).
- Um tipo primitivo (como
- Mantido no lado Rust e exposto por referência. Isso pode ser necessário quando
T
é um tipo Rust, que não pode ser passado pela fronteira FFI e não pode ser armazenado emUniquePtr<T>
.
- Retornado via parâmetros de saída (por exemplo, via
-
A parte
E
deResult<T, E>
pode ser:- Retornado como um booleano (por exemplo,
true
representando sucesso efalse
representando falha) - A preservação dos detalhes do erro é teoricamente possível, mas até agora não foi necessária na prática.
- Retornado como um booleano (por exemplo,