مدیریت خطا CXX
CXX پشتیبانی از Result<T,E>
به C++ exception متکی است، بنابراین نمیتوانیم از آن در Chromium استفاده کنیم. جایگزینهای آن عبارتند از:
-
قسمت
T
ازنتیجه<T، E>
می تواند باشد:- از طریق پارامترهای خارجی (به عنوان مثال از طریق
&mut T
) برگردانده شده است. این مستلزم آن است کهT
بتواند از مرز FFI عبور کند - برای مثالT
باید باشد:- یک type اولیه (مانند
u32
یاusize
) - تایپی که به طور native توسط
cxx
پشتیبانی میشود (مانندUniquePtr<T>
) که دارای یک مقدار پیشفرض مناسب برای استفاده در موارد خرابی است (unlikeBox<T>
).
- یک type اولیه (مانند
- در سمت Rust حفظ شده و از طریق مرجع در معرض دید قرار گرفته است. این کار ممکن است زمانی مورد نیاز باشد که
T
یک تایپ Rust است که نمیتواند از مرز FFI عبور کند و نمی تواند درUniquePtr<T>
ذخیره شود.
- از طریق پارامترهای خارجی (به عنوان مثال از طریق
-
قسمت
E
ازResult<T, E>
میتواند باشد:- بهعنوان یک boolean برگردانده میشود (مثلاً
true
نشاندهنده موفقیت وfalse
نشاندهنده یک شکست است) - حفظ جزئیات خطا در تئوری امکان پذیر است، اما تاکنون در عمل مورد نیاز نبوده است.
- بهعنوان یک boolean برگردانده میشود (مثلاً