يعد Rust أحد أفضل الخيارات لبناء تطبيقات CLI. ابدأ ببناء تطبيق أساسي لجلب البيانات المشفرة.

CLI (واجهات سطر الأوامر) أمر بالغ الأهمية في تطوير البرمجيات وإدارة النظام. CLIs عبارة عن برامج نصية خفيفة الوزن توفر طريقة مبسطة للتفاعل مع أجهزة الكمبيوتر الملائمة للمطورين والمستخدمين المتميزين على حد سواء لحالات الاستخدام المتعددة ، بما في ذلك الأتمتة والبرمجة النصية والتحكم عن بعد إدارة.

يكتسب Rust شعبية لبناء تطبيقات CLI. يوفر Rust ميزات قوية مثل التحكم الدقيق في تخصيص الذاكرة وسلامة الخيط وأمان الذاكرة والتزامن والتوازي التي يمكنك الاستفادة منها لإنشاء تطبيقات CLI قوية. تفتخر Rust أيضًا بنظام بيئي مزدهر من المكتبات والأطر المصممة بشكل صريح لبناء تطبيقات CLI.

الشروع في إنشاء تطبيقات CLI مع الصدأ

هناك العديد من حزم الجهات الخارجية لبناء تطبيقات CLI في Rust ، بما في ذلك التصفيق, الهيكل، و Termion الصناديق. توفر هذه الصناديق الميزات التي تحتاجها لتطوير أدوات CLI الحديثة.

كما يوفر Rust ملف الأمراض المنقولة جنسيا:: إنف قفص في مكتبته القياسية التي توفر وظائف للعمل مع متغيرات البيئة ووسيطات سطر الأوامر. ال

instagram viewer
الأمراض المنقولة جنسيا:: إنف يقدم الصندوق مجموعة من الأساليب والأنواع للعمل مع البيئات بطريقة مستقلة عن النظام الأساسي.

باستخدام الأمراض المنقولة جنسيا:: إنف قفص ، يمكن لبرامج Rust الخاصة بك التفاعل مع البيئة وتكييف سلوكها بناءً على عوامل مختلفة ، بما في ذلك متغيرات البيئة ، وحجج سطر الأوامر ، والعمل الحالي الدليل.

قم بتشغيل هذا الأمر لإنشاء مشروع Rust جديد لتطبيق CLI الخاص بك باستخدام Cargo ، أداة إدارة الحزم الخاصة بـ Rust:

شحن جديد crypto_cli

ستتعلم كيفية إنشاء تطبيق CLI يستدعي واجهة برمجة تطبيقات Coinmarketcap مع ملف ريكويست صندوق يوفر ميزات لصنع طلبات HTTP في Rust.

افتح Cargo.toml ملف وإضافة ريكويست و طوكيو صناديق تبعيات مشروعك:

[التبعيات]
طوكيو = {الإصدار = "1.15"، الميزات = ["ممتلىء"] }
ريكويست = {الإصدار = "0.11"، الميزات = ["json"] }
سيردي = {الإصدار = "1.0"، الميزات = ["استخلاص"] }
serde_json = "1.0"

ال طوكيو crate هي مكتبة وقت تشغيل غير متزامنة تعمل مع ملفات ريكويست للبرمجة غير المتزامنة. ال سيردي و serde_json الصناديق تساعد تسلسل JSON وإلغاء التسلسل.

في ال src مجلد مشروع Rust الخاص بك ، قم بإنشاء api.rs و cli.rs الملفات التي ستنفذ فيها استدعاء واجهة برمجة التطبيقات ووظائف CLI.

المس src / api.rs src / cli.rs

يجب أن ينشئ الأمر الملفات المطلوبة في دليل عمل مشروعك. بعد كتابة الوظائف في ملفاتهم المخصصة لفصل الاهتمامات ، ستقوم باستدعاء الوظائف في ملف رئيسي تعمل في الخاص بك main.rs ملف.

تقديم طلبات API إلى واجهة برمجة تطبيقات CoinMarketCap مع Reqwest

واجهة برمجة تطبيقات CoinMarketCap يسمح لك بالوصول إلى بيانات العملة المشفرة ودمجها في تطبيقاتهم. توفر واجهة برمجة التطبيقات (API) نقاط نهاية للقوائم ، وأسعار السوق ، وتبادل المعلومات ، وأدوات التحويل ، والبيانات التاريخية ، والبيانات الوصفية.

عند تسجيل الدخول ، يمكنك التسجيل للحصول على حساب CoinMarketCap واسترداد مفتاح API الخاص بك على صفحة مطور Coinmarketcap. يمكنك أيضًا الرجوع إلى الوثائق للحصول على إرشادات مفصلة وحدود الأسعار.

لتقديم طلب API إلى /v2/cryptocurrency/quotes/latest نقطة النهاية التي تعرض أحدث أسعار السوق لواحدة أو أكثر من العملات المشفرة ، فسيتعين عليك تحديد هياكل للبيانات التي تريد استخراجها من واجهة برمجة التطبيقات وتحديد السمات مع سمة اشتقاق Serde.

ثم يمكنك طلب واجهة برمجة تطبيقات إلى نقطة النهاية واستخدام ملف serde_json صندوق لإلغاء تسلسل بيانات JSON في الهيكل لتسهيل العمليات على أنواع بيانات الصدأ.

ها هي تعريف الهيكل الذي يسترد بطاقة تعريف, اسم, رمز، و يقتبس بيانات العملات المشفرة المحددة

# [اشتقاق (تصحيح ، إلغاء تسلسل ، تسلسل)]
هيكلApiResponse {
البيانات: البيانات ،
}

# [اشتقاق (تصحيح ، إلغاء تسلسل ، تسلسل)]
هيكلبيانات {
// أضف الحقول التي تحتاجها من كائن البيانات
# [serde (إعادة تسمية = "1")]
crypto_1: عملة معماة ،

# [serde (إعادة تسمية = "2")]
crypto_2: عملة معماة ،

# [serde (إعادة تسمية = "3")]
crypto_3: عملة معماة ،

# [serde (إعادة تسمية = "4")]
crypto_4: عملة معماة ،
}

# [اشتقاق (تصحيح ، إلغاء تسلسل ، تسلسل)]
هيكلعملة مشفرة {
بطاقة تعريف: u32,
اسم: خيط,
رمز: خيط,
// أضف الحقول الأخرى حسب الحاجة
اقتباس: اقتباس ،
}

# [اشتقاق (تصحيح ، إلغاء تسلسل ، تسلسل)]
هيكليقتبس {
الدولار الأمريكي: QuoteDetails،
}

# [اشتقاق (تصحيح ، إلغاء تسلسل ، تسلسل)]
هيكلتفاصيل الاقتباس {
سعر: f64,
حجم_24 ساعة: f64,
// أضف الحقول الأخرى حسب الحاجة
}

تقوم واجهة برمجة التطبيقات بإرجاع البيانات التي قد تكون أكثر مما تحتاج إليه ، ولكن باستخدام امتداد سيردي قفص ، يمكنك تحديد البيانات الدقيقة التي تحتاجها ، كما هو موضح أعلاه.

الآن ، يمكنك طلب نقطة النهاية مع Reqwest عن طريق إنشاء عميل جديد يقوم بإجراء طلب GET بالمعلمات المطلوبة.

يستخدم reqwest:: العميل ؛
يستخدم reqwest:: خطأ.

حانةغير متزامنالجبهة الوطنيةالتشفير() -> نتيجة {
يترك العميل = العميل:: جديد () ؛

يترك url = " https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest";

يترك المعلمات = [
("بطاقة تعريف", "1,2,3,4"),
("يتحول", "دولار أمريكي"), // تحويل قيم السوق إلى الدولار الأمريكي
];

يترك response = client.get (url)
.header ("X-CMC_PRO_API_KEY", "مفتاح API الخاص بك هنا")
.query (& params)
.يرسل().انتظر?;
;

يترك النتيجة: ApiResponse = serde_json:: from_str (& * response.text ().انتظر؟؛).بسط()؛

println!("{:#?}"، نتيجة)؛
نعم(())
}

ال التشفير الوظيفة هي وظيفة غير متزامنة ممكّنة لـ tokio وتطلب نقطة النهاية بامتداد client.get وظيفة بعد إنشاء مثيل العميل بامتداد العميل:: جديد طريقة.

ال رأس وظيفة استدعاء على مثيل منشئ الطلب تأخذ في مفتاح API الخاص بك ، و استفسار تأخذ الدالة المعلمات ، و يرسل وظيفة ترسل الطلب.

ال التشفير تقوم الدالة بإلغاء تسلسل استجابة JSON باستخدام serde_json from_str الطريقة التي تأخذ سلسلة JSON.

وأخيرا، فإن التشفير تقوم الوظيفة بطباعة نتيجة عملية إلغاء التسلسل على وحدة التحكم.

استرداد حجج CLI في Rust

في الخاص بك cli.rs ملف ، ستقوم باستيراد ملف التشفير وظيفة من api.rs ملف واستدعاء الوظيفة إذا كان المستخدم نوع "crypto" كوسيطة على تشغيل المشروع بامتداد تشغيل البضائع يأمر.

إليك كيف يمكنك استخدام الأمراض المنقولة جنسيا:: إنف وظيفة لاسترداد الوسيطة من سطر الأوامر:

يستخدم الأمراض المنقولة جنسيا:: إنف ؛
يستخدم قفص:: api:: crypto ؛

حانةغير متزامنالجبهة الوطنيةcli() {
يترك أرغس: Vec<خيط> = env:: args (). collection () ؛

لو args.len ()> 1 && أرجس [1] == "تشفير" {
تشفير ().انتظر.بسط()؛
} آخر {
println!("أمر خاطئ. الاستعمال: تشفير تشغيل البضائع ");
}
}

ال cli تسترد الدالة جميع الوسائط من سطر الأوامر بامتداد env:: args (). collect () وظيفة. ال إذا كان غير ذلك تتحقق العبارة مما إذا كانت هناك حجة إضافية ، "التشفير". إذا كانت قيمة الشرط صحيحة ، فإن cli وظيفة تستدعي ال التشفير وظيفة؛ وإلا فإن cli وظيفة طباعة سلسلة إلى وحدة التحكم.

أخيرًا ، يمكنك استدعاء cli تعمل في رئيسي وظيفة. يجب عليك إضافة # [tokio:: main] السمة منذ ذلك الحين رئيسي الوظائف لا يمكن أن تكون غير متزامنة في Rust.

عصري أبي.
عصري cli.
يستخدم قفص:: cli:: cli ؛

# [tokio:: main]
غير متزامنالجبهة الوطنيةرئيسي() {
cli ().انتظر;
}

ال رئيسي وظيفة تستدعي ال cli تعمل مع انتظر الوظيفة التي توقف التنفيذ حتى ظهور نتيجة مستقبل جاهز.

إليكم نتيجة تشغيل تشفير تشغيل البضائع يأمر:

يمكنك إنشاء تطبيقات ويب متطورة في Rust

Rust هي لغة برمجة متعددة الاستخدامات مع العديد من حالات الاستخدام والتطبيقات. يمكنك الاستفادة من أطر عمل الويب التابعة لجهات خارجية مثل Actix و Rocket و Warp لإنشاء تطبيقات الويب في Rust. توفر أطر العمل هذه معظم الوظائف اللازمة لإنشاء تطبيقات الويب الحديثة.