Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Обработка ошибок в 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 — неудачу)
    • Теоретически можно сохранить подробности ошибки, но на практике пока в этом не возникало необходимости.