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
TdeResult<T, E>pode ser:- Retornado via parâmetros de saída (por exemplo, via
&mut T). Isso requer queTpossa ser passado pela fronteira FFI - por exemplo,Ttem que ser:- Um tipo primitivo (como
u32ouusize) - 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
EdeResult<T, E>pode ser:- Retornado como um booleano (por exemplo,
truerepresentando sucesso efalserepresentando 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,