Обробка помилок в CXX
У CXX підтримка Result<T,E> покладається на винятки C++, тому ми не можемо використовувати її у Chromium. Альтернативи:
-
Частина
TуResult<T, E>може бути:- Повернута через вихідні параметри (наприклад, через
&mut T). Для цього потрібно, щобTможна було передати через межу FFI - наприклад,Tмає бути:- Примітивний тип (наприклад,
u32абоusize) - Тип, що підтримується
cxx(наприклад,UniquePtr<T>), який має відповідне значення за замовчуванням для використання у випадку невдачі (на відміну відBox<T>).
- Примітивний тип (наприклад,
- Збережена на стороні Rust та доступна за посиланням. Це може знадобитися, коли
Tє типом Rust, який не може бути переданий через межу FFI і не може бути збережений уUniquePtr<T>.
- Повернута через вихідні параметри (наприклад, через
-
Частина
EуResult<T, E>може бути:- Повернута як булеве значення (наприклад,
trueозначає успіх, аfalse- невдачу) - Збереження деталей помилок теоретично можливе, але поки що на практиці воно не було потрібне.
- Повернута як булеве значення (наприклад,