مدیریت خطا CXX

‏ CXX پشتیبانی از Result<T,E> به C++ exception متکی است، بنابراین نمی‌توانیم از آن در Chromium استفاده کنیم. جایگزین‌های آن عبارتند از:

  • قسمت T از نتیجه<T، E> می تواند باشد:

    • از طریق پارامترهای خارجی (به عنوان مثال از طریق &mut T) برگردانده شده است. این مستلزم آن است که T بتواند از مرز FFI عبور کند - برای مثال T باید باشد:
      • یک type اولیه (مانند u32 یا usize)
      • تایپی که به طور native توسط cxx پشتیبانی می‌شود (مانند UniquePtr<T>) که دارای یک مقدار پیش‌فرض مناسب برای استفاده در موارد خرابی است (unlike Box<T>).
    • در سمت Rust حفظ شده و از طریق مرجع در معرض دید قرار گرفته است. این کار ممکن است زمانی مورد نیاز باشد که T یک تایپ Rust است که نمی‌تواند از مرز FFI عبور کند و نمی تواند در UniquePtr<T> ذخیره شود.
  • قسمت E از Result<T, E> می‌تواند باشد:

    • به‌عنوان یک boolean برگردانده می‌شود (مثلاً true نشان‌دهنده موفقیت و false نشان‌دهنده یک شکست است)
    • حفظ جزئیات خطا در تئوری امکان پذیر است، اما تاکنون در عمل مورد نیاز نبوده است.