تعرف على كيفية التعامل الفعال مع ملفات TOML في Rust باستخدام هذا الدليل الشامل.
تلعب ملفات التكوين أدوارًا مهمة في تطوير البرامج وإدارة النظام لـ تخصيص وصقل سلوك البرامج لجعلها قابلة للتكيف مع البيئات والمستخدمين المختلفين التفضيلات. هناك أنواع عديدة من ملفات التكوين ، مثل YAML و TOML.
تبرز TOML (لغة Tom الواضحة البسيطة) كخيار قوي وسهل الاستخدام من بين العديد من تنسيقات ملفات التكوين الخاصة به بناء الجملة وكيفية معالجته لأوجه القصور في تنسيقات ملفات التكوين الحالية لتوفير صيغة أكثر سهولة ومباشرة بديل.
فهم ملف TOML
في جوهره ، يعبر تنسيق ملف TOML عن البيانات المهيكلة بتنسيق يمكن للبشر قراءته. تميز TOML نفسها بتصميمها البسيط والبديهي بعد زوج من القيمة الرئيسية بنية حيث يمثل كل مفتاح خيار تكوين مرتبطًا بقيمة تحدد إعدادات.
يعتمد تنسيق ملف TOML على قواعد بناء بسيطة تعطي الأولوية لقابلية القراءة ، مما يجعلها في متناول البشر والآلات. إحدى الميزات البارزة لـ TOML هي دعمها لأنواع البيانات المختلفة ، بما في ذلك السلاسل والأعداد الصحيحة وأرقام الفاصلة العائمة والمنطقية والمصفوفات والجداول.
يتيح لك تعدد استخدامات TOML إمكانية التعبير بسهولة عن التكوينات المعقدة لاستيعاب نطاق أوسع من حالات الاستخدام. يوفر TOML العديد من الميزات والوظائف ، مما يجعله خيارًا مثاليًا لأغراض التكوين.
- بنية بديهية: تتبنى TOML بنية هرمية تتألف من جداول وأزواج ذات قيمة رئيسية ومصفوفات. يسمح تنظيم TOML بتمثيل واضح ومنطقي لإعدادات التكوين المعقدة.
- التعليقات والمسافات: يدعم TOML التعليقات المضمنة ومتعددة الأسطر ، مما يسمح لك بالتعليق على ملفات التكوين الخاصة بك وتوثيقها بشكل فعال. يتم تجاهل المسافات بشكل أساسي لضمان سهولة القراءة وتقليل الضوضاء غير الضرورية.
- كتابة قوية: ترتبط كل قيمة في TOML بنوع بيانات محدد ، من السلاسل إلى الأعداد الصحيحة ، والعوامات ، والقيم المنطقية ، والتواريخ. يساعد تطبيق TOML القوي على الكتابة في الحفاظ على تكامل البيانات من أجل معالجة خالية من الأخطاء.
- دعم الهياكل المتداخلة: TOML يسهل الجداول المتداخلة داخل الجداول لتمثيل التكوين الهرمي. تعتبر الهياكل المتداخلة مفيدة عند التعامل مع الإعدادات متعددة الأبعاد أو إعدادات التطبيقات المعقدة.
- مصفوفة ودعم الجدول المضمنة: يوفر TOML صفائف وجداول مضمنة للمرونة في التعبير عن هياكل البيانات المكررة أو المضغوطة.
يتبع TOML القواعد والمصطلحات التي تحدد بناء الجملة والهيكل. يعتمد التنسيق على المسافة البادئة وأزواج القيمة والمفتاح لتمثيل بيانات التكوين.
فيما يلي مثال على ملف TOML بسيط للتكوينات:
[الخادم]
ميناء = 8080
يستضيف = "مضيف محلي"
التصحيح = خطأ شنيع
[قاعدة البيانات]
اسم = "قاعدة بياناتي"
اسم المستخدم = "مسؤل"
كلمة المرور = "كلمة السر السرية"
يحتوي ملف TOML هذا على قسمين يحتويان على أزواج ذات قيمة رئيسية تمثل خيارات تكوين محددة. هنا ، ميناء مفتاح في [الخادم] يحدد القسم رقم منفذ على يستضيف المفتاح الذي يحدد اسم مضيف الخادم.
العمل مع ملفات TOML في Rust
اختارت Rust ، وهي لغة تفخر بالسلامة والأداء وتجربة المطور ، ملفات TOML كتنسيق تكوينها نظرًا لتكاملها السلس مع روحها.
يمكنك أن تنسب قرار Rust باستخدام TOML إلى عدة عوامل رئيسية. أولاً ، تحقق TOML توازنًا متناغمًا بين سهولة القراءة والتعبير. بالإضافة إلى ذلك ، يضمن نهج TOML البسيط بقاءه خاليًا من التعقيدات غير الضرورية ، بما يتوافق مع فلسفة تصميم Rust.
هناك العديد من الصناديق التابعة لجهات خارجية للعمل مع ملفات TOML في نظام Rust ، مع امتداد تومل قفص باعتباره الأكثر شعبية.
ال تومل يوفر الصندوق دعمًا شاملاً لتحليل بيانات TOML ومعالجتها وتسلسلها ، مما يجعلها أداة لا غنى عنها للتعامل مع ملفات التكوين والبيانات المنظمة في تطبيقات Rust.
ل العمل مع حزم الجهات الخارجية في Rust، قم بإنشاء مشروع Rust باستخدام Cargo وأضف هذا التوجيه إلى ملف التبعيات قسم من مشروعك Cargo.toml ملف لتثبيته واستخدامه تومل صندوق في مشاريع Rust الخاصة بك:
[التبعيات]
تومل = "0.5"
ل TOML تسلسل البيانات وإلغاء التسلسل ، ستحتاج إلى صندوق serde. ال تومل قفص يعمل بشكل جيد مع سيردي لمعالجة البيانات.
[التبعيات]
سيردي = {الإصدار = "1.0"، الميزات = ["استخلاص"] }
تومل = "0.5"
بمجرد إضافة تومل و سيردي الصناديق باعتبارها تبعيات ، يمكنك استيرادها إلى كود Rust الخاص بك والاستفادة من وظائفها.
يستخدم تومل.
ال تومل يمكن للصندوق قراءة ملفات TOML وكتابتها وتحليلها.
قراءة ملفات TOML مع الصدأ
بعد إضافة ملف تومل كصندوق تبعية للمشروع واستيراد الصندوق إلى مشروعك ، يمكنك قراءة ملفات TOML في برامج Rust الخاصة بك.
أولاً ، ستحتاج إلى فتح ملف TOML باستخدام الملف المدمج خ قفص ملف هيكل:
يستخدم الأمراض المنقولة جنسيا:: fs:: ملف ؛
يستخدم الأمراض المنقولة جنسيا:: io:: قراءة ؛الجبهة الوطنيةرئيسي() {
يتركموت ملف = ملف:: فتح ("config.toml").يتوقع("فشل فتح ملف");
يتركموت المحتويات = خيط::جديد()؛
file.read_to_string (&موت محتويات)
.يتوقع("فشل قراءة الملف");
// في هذه المرحلة ، تحتوي "المحتويات" على محتوى ملف TOML
println!("{}"، محتويات)؛
}
ال رئيسي وظيفة تفتح أ شحن ملف بامتداد فتح الملف طريقة ويقرأ محتويات الملف في سلسلة مع read_to_string الطريقة قبل طباعة المحتويات على وحدة التحكم باستخدام ملف println! دقيق.
تعد قراءة محتويات ملف TOML كسلسلة مفيدة ، ولكن في معظم الحالات ، تريد تحميل البيانات بتنسيق أكثر تنظيماً. الصدأ يسمح لنا بذلك تحديد أنواع الهياكل التي تمثل بنية البيانات لملفات TOML الخاصة بنا. يمكنك الآن استخدام ملف تومل صندوق لإلغاء تسلسل بيانات TOML تلقائيًا إلى هذه الهياكل.
إليك كيفية قراءة محتويات مشروعك Cargo.toml ملف وطباعتها على وحدة التحكم:
يستخدم serde:: نزع التسلسل ؛
يستخدم الأمراض المنقولة جنسيا:: fs ؛# [اشتقاق (تصحيح ، إلغاء التسلسل)]
هيكلكارجوتومل {
# [السماح (dead_code)]// تعطيل تحذير رمز ميت للهيكل بأكمله
الحزمة: الحزمة ،
# [السماح (dead_code)]
التبعيات: التبعيات ،
}# [اشتقاق (تصحيح ، إلغاء التسلسل)]
هيكلطَرد {
# [السماح (dead_code)]
اسم: خيط,
# [السماح (dead_code)]
إصدار: خيط,
# [السماح (dead_code)]
الإصدار: خيط,
}# [اشتقاق (تصحيح ، إلغاء التسلسل)]
هيكلالتبعيات {
# [السماح (dead_code)]
serde: SerdeDependency ،
# [السماح (dead_code)]
تومل: خيط,
}# [اشتقاق (تصحيح ، إلغاء التسلسل)]
هيكلالاعتماد على الذات {
# [السماح (dead_code)]
إصدار: خيط,
# [السماح (dead_code)]
سمات: Vec<خيط>,
}الجبهة الوطنيةرئيسي() {
يترك toml_str = fs:: read_to_string ("Cargo.toml").يتوقع("فشل قراءة ملف Cargo.toml");يترك cargo_toml: CargoToml = toml:: from_str (& toml_str) .expect ("فشل إلغاء تسلسل Cargo.toml");
println!("{:#?}"، cargo_toml) ؛
}
ال كارجوتومل, طَرد, التبعيات، و الاعتماد على الذات الهياكل تمثل بنية ملف TOML. الهياكل مشروحة ب # [السماح (dead_code)] سمات لتعطيل تحذيرات التعليمات البرمجية الميتة للمنشآت.
ال رئيسي وظيفة يقرأ محتويات Cargo.toml ملف في toml_str متغير و from_str طريقة تومل يقرأ الصندوق سلسلة TOML ويلغي تسلسل المحتويات في ملف cargo_toml عامل.
إليك ناتج تشغيل رئيسي وظيفة:
كتابة البيانات إلى ملفات TOML مع الصدأ
تعد كتابة البيانات إلى ملفات TOML أمرًا مفيدًا لإنشاء ملفات التكوين من برامجك.
إليك كيفية إجراء تسلسل لبنية إلى TOML وكتابة المحتويات إلى ملف config.toml ملف في الدليل الجذر لمشروعك:
يستخدم الأمراض المنقولة جنسيا:: fs:: ملف ؛
يستخدم الأمراض المنقولة جنسيا:: io:: اكتب ؛
يستخدم serde:: المسلسل ؛
يستخدم toml:: to_string؛# [اشتقاق (تسلسل)]
هيكلسيرفركونفيغ {
يستضيف: خيط,
ميناء: u16,
نفذ الوقت: u32,
}الجبهة الوطنيةwrite_config_to_file(التكوين: & ServerConfig ، file_path: &شارع) -> نتيجةصندوق<دين الأمراض المنقولة جنسيا:: خطأ:: خطأ >> {
يترك toml_string = to_string (config) ؟؛
يتركموت ملف = ملف:: إنشاء (file_path) ؟؛
file.write_all (toml_string.as_bytes ()) ؟؛
نعم(())
}الجبهة الوطنيةرئيسي() {
يترك التكوين = ServerConfig {
يستضيف: "مضيف محلي"مملوكة () ،
ميناء: 8000,
نفذ الوقت: 30,
};
لويتركخطأ(هـ) = write_config_to_file (& config ، "config.toml") {
eprintln! ("خطأ: {}"، ه) ؛
} آخر {
println!("تم إنشاء ملف التكوين بنجاح.");
}
}
ال write_config_to_file تشير الوظيفة إلى مثيل سيرفركونفيغ الهيكل ومسار الملف الخاص بامتداد config.toml يحول file مثيل البنية إلى سلسلة وينشئ الامتداد config.toml ملف في مسار الملف المحدد. أخيرًا ، يكتب سلسلة TOML إلى ملف TOML باستخدام امتداد write_all وظيفة.
ال رئيسي وظيفة تهيئ أ سيرفركونفيغ الكائن Struct ، يستدعي write_config_to_file بالبيانات اللازمة ، ويطبع رسالة إلى وحدة التحكم بناءً على حالة التشغيل.
تستخدم شركة Cargo ملفات TOML لإدارة التبعية
يستخدم Cargo ومدير تبعية Rust وأداة الإنشاء ملفات TOML لتحديد التبعيات وإدارتها.
عند إنشاء مشروع Rust جديد باستخدام Cargo ، فإنه ينشئ ملف Cargo.toml في الدليل الجذر لمشروعك والذي يعمل بمثابة بيان لمشروعك. يمكنك هنا الإعلان عن البيانات الوصفية والتبعيات وتكوينات الإنشاء والإعدادات الأخرى لمشروعك.