Rust में डेटा सत्यापन: लाइब्रेरी और फ्रेमवर्क का अवलोकन
डेटा सत्यापन Rust में किसी भी एप्लिकेशन के विकास का एक महत्वपूर्ण चरण है। इनपुट डेटा की जांच की सटीकता पर प्रोग्राम की सुरक्षा, स्थिरता और पूर्वानुमेयता निर्भर करती है। Rust इकोसिस्टम में सत्यापन के लिए कई परिपक्व समाधान मौजूद हैं, जिनमें से प्रत्येक की अपनी विशेषताएं हैं। इस लेख में हम तीन मुख्य लाइब्रेरी: validator, garde और validify के साथ-साथ serde की अंतर्निहित क्षमताओं पर विस्तार से चर्चा करेंगे।
1. validator लाइब्रेरी
validator डेटा संरचनाओं के सत्यापन के लिए सबसे लोकप्रिय लाइब्रेरी है। यह संरचनाओं के फील्ड को एनोटेट करने और derive-मैक्रो के माध्यम से स्वचालित रूप से जांच कोड उत्पन्न करने के लिए एट्रीब्यूट प्रदान करती है।
स्थापना
[dependencies]validator = { version = "0.18", features = ["derive"] }उपयोग का उदाहरण
use validator::Validate;
#[derive(Debug, Validate)]struct User { #[validate(length(min = 3, max = 50))] username: String,
#[validate(email)] email: String,
#[validate(range(min = 18, max = 120))] age: u8,
#[validate(required)] phone: Option<String>,}
fn main() { let user = User { username: "Jo".to_string(), email: "invalid-email".to_string(), age: 15, phone: None, };
match user.validate() { Ok(_) => println!("डेटा सही है"), Err(errors) => { for (field, err) in &errors { println!("फील्ड '{}' में त्रुटि: {:?}", field, err); } } }}validator की मुख्य क्षमताएं
- अंतर्निहित सत्यापनकर्ता:
email,url,phone,credit_card,ip,must_matchऔर अन्य। - स्ट्रिंग की लंबाई, संख्यात्मक सीमा, नियमित अभिव्यक्तियों की जांच।
#[validate(nested)]के माध्यम से नेस्टेड संरचनाओं का सत्यापन।customके माध्यम से कस्टम सत्यापनकर्ताओं का समर्थन।
2. garde लाइब्रेरी
garde एक आधुनिक और उच्च-प्रदर्शन वाला सत्यापन फ्रेमवर्क है, जो बेहतर प्रदर्शन और अधिक लचीली नियम प्रणाली के साथ validator के विकल्प के रूप में स्थापित है।
स्थापना
[dependencies]garde = "0.21"उपयोग का उदाहरण
use garde::Validate;
#[derive(Debug, Validate)]struct RegisterForm { #[garde(length(min = 3, max = 50))] username: String,
#[garde(email)] email: String,
#[garde(range(min = 18))] age: u32,
#[garde(ascii)] password: String,}
fn main() { let form = RegisterForm { username: "a".to_string(), email: "test".to_string(), age: 15, password: "पासवर्ड".to_string(), };
if let Err(errors) = form.validate() { for error in errors { println!("त्रुटि: {}", error.message); } } else { println!("फॉर्म मान्य है"); }}garde के लाभ
- एलोकेशन को कम करके उच्च प्रदर्शन।
- एसिंक्रोनस सत्यापनकर्ताओं का समर्थन।
- समृद्ध अंतर्निहित नियम सेट:
email,url,ip,phone,credit_card,patternऔर अन्य। - नियमों का समूहीकरण और प्रासंगिक सत्यापन।
- मनमानी तर्क के साथ कस्टम सत्यापनकर्ता बनाने की क्षमता।
3. validify लाइब्रेरी
validify एक फ्रेमवर्क है जो serde के साथ एकीकृत होता है और डिसीरियलाइज़ेशन के तुरंत बाद डेटा सत्यापन का एक सुविधाजनक तरीका प्रदान करता है। यह वेब फ्रेमवर्क (actix-web, axum) के साथ काम करते समय विशेष रूप से उपयोगी है।