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