Avatar ·

كيفية إنشاء واستخدام أنواع الأخطاء المخصصة في Rust بشكل صحيح؟

مرحباً بالجميع! أنا مبتدئ في Rust وأحاول فهم معالجة الأخطاء. قرأت الكتاب ولكن ما زلت لا أفهم كيفية إنشاء أنواع الأخطاء الخاصة بي للمكتبة بشكل صحيح. لدي محلل (parser) بسيط لملفات التكوين. أريد أن يعيد أخطاء مفهومة: "خطأ نحوي في السطر X"، "معامل غير معروف"، "خطأ في الإدخال/الإخراج". حالياً قمت بذلك: ```rust enum ConfigError { IoError, ParseError, UnknownParam, } ``` لكن هذا غير مريح - لا توجد معلومات عن مكان حدوث الخطأ بالضبط. بالإضافة إلى ذلك، لا يمكنني استخدام `?` مع `std::io::Error` ونوعي الخاص في نفس الوقت. قرأت عن traits `std::error::Error` و `Display` و `Debug`، لكنني لا أفهم كيفية تنفيذها بشكل صحيح. رأيت أن الكثيرين يستخدمون crate `thiserror`، لكنني أريد أولاً أن أفهم كيف...