إمكانية الوصول في Rust: كيفية جعل الكود صديقًا للجميع

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

لماذا إمكانية الوصول في Rust ليست خيارًا بل ضرورة



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



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



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



إمكانية الوصول في CLI: جعل وحدة التحكم ملائمة للجميع



قد يبدو الطرفية (Terminal) آخر مكان نحتاج فيه إلى إمكانية الوصول. ولكن هنا غالبًا ما يعمل الأشخاص ذوو الإعاقات البصرية أو الحركية. إمكانية الوصول في Rust CLI تبدأ بأشياء بسيطة:



  • رسائل خطأ واضحة - استخدم eprintln! لإخراج الأخطاء، بحيث يمكن توجيهها بشكل منفصل إلى سجل أو قراءتها بواسطة قارئ الشاشة.
  • أنظمة الألوان - لا تعتمد فقط على اللون. أضف رموزًا أو نصًا: [OK]، [خطأ].
  • مخرجات مفهومة - تجنب الجداول المعقدة بدون تسميات.


إليك مثال لأداة CLI بسيطة بلغة Rust مع مراعاة إمكانية الوصول:



use std::io::{self, Write};

fn main() { print!("أدخل اسمك: "); io::stdout().flush().unwrap();

let mut name = String::new(); io::stdin().read_line(&mut name).unwrap(); let name = name.trim();

if name.is_empty() { eprintln!("[خطأ] لا يمكن أن يكون الاسم فارغًا."); std::process::exit(1); }

println!("[OK] مرحبًا، {}! سعداء برؤيتك.", name);}


لاحظ: نستخدم eprintln! للأخطاء - هذه هي الطريقة القياسية لـ إمكانية الوصول في Rust CLI. يمكن للمستخدم توجيه stderr إلى تيار أو ملف منفصل، وتقوم قارئات الشاشة بمعالجة هذا الإخراج بسهولة أكبر.



إمكانية الوصول للويب في Rust: Yew وWASM



أطر العمل الحديثة للويب بلغة Rust، مثل Yew وLeptos وDioxus، تسمح بإنشاء تطبيقات SPA كاملة. وهنا إمكانية الوصول للويب في Rust ليست مجرد وسوم، بل حل معماري.



المبادئ الأساسية لـ WCAG (إرشادات إمكانية الوصول لمحتوى الويب) التي يجب اتباعها:



  • التباين - يجب أن يكون النص مقروءًا جيدًا على الخلفية.
  • التنقل بلوحة المفاتيح - يجب أن تكون جميع العناصر متاحة عبر مفتاح Tab.
  • سمات ARIA - تسميات إضافية لقارئات الشاشة.
  • الترميز الدلالي - استخدم وسوم HTML الصحيحة.


مثال لمكون في Yew مع مراعاة سمات ARIA في Rust:



use yew::prelude::*;

#[function_component(AccessibleButton)]pub fn accessible_button() -> Html { html! { <button class="btn btn-primary" aria-label="إرسال النموذج" role="button" tabindex="0" onkeypress={|e| { if e.key() == "Enter" || e.key() == " " { // معالجة النقر } }} > { "إرسال" }

المدونات

توصيات الكتب