البرمجة

تطبيق التطابق في Rust

عند العمل في تطبيق شبكي حيث تريد تحديد جميع عناوين الآي بي الممكنة لواجهة الشبكة (IPv4 أو IPv6) والقيام بشيء مع عناوين v4 فقط، يمكنك استخدام التطابق pattern matching في Rust للتحقق مما إذا كان العنوان الذي تم العثور عليه هو IPv4 أم لا. الطريقة الأكثر شيوعًا للقيام بذلك هي باستخدام match statement.

في حالتك، عندما تحصل على Option>، يمكنك استخدام match للتحقق مما إذا كانت القيمة موجودة (Some) أم لا (None)، وبعد ذلك يمكنك استخدام التطابق مع التحديد (pattern matching) لفحص كل عنوان آي بي في الـ Vector والتأكد مما إذا كان IPv4 أم لا.

إليك كيفية تحقيق ذلك بالتفصيل:

rust
use std::net::{IpAddr, Ipv4Addr}; fn main() { // Example Option> let addresses = Some(vec![ IpAddr::V6("fe80::6a5b:35ff:fec7:5eeb".parse().unwrap()), IpAddr::V4(Ipv4Addr::new(10, 0, 11, 241)), ]); // Using match to handle Option match addresses { Some(vec) => { // Iterate over the vector for ip_addr in vec { // Using match to handle IpAddr enum match ip_addr { IpAddr::V4(ipv4) => { // If it's IPv4, print it println!("{}", ipv4); } IpAddr::V6(_) => { // If it's IPv6, do nothing } } } } None => { println!("No addresses found."); } } }

في هذا المثال، نقوم بتحديد متغير addresses ليكون Option>. ثم نستخدم match لفحص إذا ما كانت هناك قيمة موجودة (Some) أو لا (None). إذا كان هناك قيمة موجودة، فإننا نقوم بتكرار عبر الـ Vector ونستخدم match مرة أخرى للتحقق مما إذا كانت العنوان IPv4 أو IPv6 وفقًا لذلك نقوم بالطباعة أو عدم القيام بأي شيء بناءً على النوع. إذا كانت القيمة فارغة، فسنطبع رسالة تفيد بعدم وجود عناوين.

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

المزيد من المعلومات

بالتأكيد، سأواصل إكمال المقال بمزيد من التفاصيل والشروحات:

عندما تقوم بتشغيل التطبيق، سيتم تنفيذ الشيفرة المذكورة أعلاه. أولاً، ستقوم بطباعة “10.0.11.241”، وهو العنوان IPv4 الذي تم العثور عليه في الـ Option>. بمجرد الانتهاء من ذلك، ستنتهي عملية التشغيل لأنه لا يوجد أي رمز بعد نهاية البرنامج.

قد يظهر الكود بسيطًا، ولكنه يحتوي على العديد من المفاهيم المهمة في Rust. فلنلقِ نظرة أعمق على بعض هذه المفاهيم:

  1. التطابق pattern matching: في Rust، يُستخدم التطابق للتحقق من قيم متغيرات وتنفيذ سلوك مختلف بناءً على هذه القيم. يُعتبر match وسيلة قوية ومرنة للتعامل مع مختلف الحالات.

  2. التعبيرات الإتشاءية (Enums): Enums هي تعبيرات تعتبر مجموعة محدودة من القيم. في هذا المثال، استخدمنا IpAddr كـ enum لتمثيل عناوين IPv4 و IPv6.

  3. الأنماط في التطابق: يمكنك استخدام الأنماط في match للتحقق من تطابق نوع معين من البيانات. في هذا المثال، استخدمنا نمطًا للتحقق من ما إذا كان العنوان IpAddr هو IPv4 أو IPv6.

  4. تنوع النوع (Type versatility): تبرز Rust بقدرتها على التعامل مع الأنواع بشكل مرن وفعال. يمكنك التعامل بسهولة مع مجموعة متنوعة من البيانات وتطبيق السلوك المناسب لها.

هذه المفاهيم الأساسية في Rust تساعدك في بناء تطبيقات قوية وموثوقة. عندما تتقن استخدامها، ستتمكن من كتابة كود فعال وصيانة سهلة، مما يساعد في تسريع عملية التطوير وتقليل الأخطاء.

في النهاية، يجدر بك أن تتحقق من مستندات Rust الرسمية وتستكشف المزيد من الأمثلة والمفاهيم لتعزيز فهمك ومهاراتك في البرمجة بلغة Rust.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر