Обробка помилок в 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
- невдачу) - Збереження деталей помилок теоретично можливе, але поки що на практиці воно не було потрібне.
- Повернута як булеве значення (наприклад,