Обработка ошибок в CXX
Поддержка Result<T,E> в CXX опирается на исключения C++, поэтому в Chromium её использовать нельзя. Альтернативы:
-
Часть
TвResult<T, E>может быть:- Возвращена через выходные параметры (например, через
&mut T). Для этогоTдолжно передаваться через границу FFI, то есть быть, например:- примитивным типом (например,
u32илиusize) - типом, который
cxxподдерживает нативно (например,UniquePtr<T>) и у которого есть подходящее значение по умолчанию для случая ошибки (в отличие отBox<T>).
- примитивным типом (например,
- Сохранена на стороне Rust и открыта через ссылку. Это может понадобиться, когда
T— тип Rust, который нельзя передать через границу FFI и нельзя поместить вUniquePtr<T>.
- Возвращена через выходные параметры (например, через
-
Часть
EвResult<T, E>может быть:- Возвращена как логическое значение (например,
trueозначает успех, аfalse— неудачу) - Теоретически можно сохранить подробности ошибки, но на практике пока в этом не возникало необходимости.
- Возвращена как логическое значение (например,