thiserror
و anyhow
این thiserror
و anyhow
crateها به طور گسترده ای برای ساده کردن رسیدگی به خطا استفاده میشوند.
thiserror
is often used in libraries to create custom error types that implementFrom<T>
.- اغلب
anyhow
توسط برنامهها برای کمک به مدیریت خطا در توابع، از جمله افزودن اطلاعات متنی به خطاهای شما، استفاده میشود.
Speaker Notes
This slide should take about 5 minutes.
thiserror
- ماکرو استخراج
Error
توسطthiserror
ارائه میشود و دارای ویژگیهای مفید زیادی برای کمک به تعریف انواع خطا به روشی فشرده است. - ویژگی
std::error::Error
به طور خودکار مشتق میشود. - پیام
#[error]
برای استخراج ویژگیDisplay
استفاده میشود.
anyhow
anyhow::Error
اساساً پوششی (wrapper) در اطرافBox<dyn Error>
است. به این ترتیب معمولاً انتخاب خوبی برای API عمومی یک کتابخانه نیست، اما به طور گسترده در برنامههای مختلف استفاده میشود.anyhow::Result<V>
یک type مستعار برای استResult<V, anyhow::Error>
.- در صورت لزوم میتوان نوع خطای واقعی داخل آن را برای بررسی استخراج کرد.
- عملکرد ارائه شده توسط
anyhow::Result<T>
ممکن است برای توسعهدهندگان Go آشنا باشد، زیرا الگوهای استفاده و ارگونومی مشابهی را با(T, error)
از Go ارائه میدهد. anyhow::Context
یک ویژگی است که برای typeهای استانداردResult
وOption
پیادهسازی شده است.use anyhow::Context
برای فعال کردن.context()
و.with_context()
در آن typeها ضروری است.