Rust अनुप्रयोगों का कॉन्फ़िगरेशन: config, envy और dotenvy लाइब्रेरीज़

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Rust अनुप्रयोगों का कॉन्फ़िगरेशन: config, envy और dotenvy लाइब्रेरीज़



Rust में अनुप्रयोग विकसित करते समय, कॉन्फ़िगरेशन प्रबंधन एक प्रमुख कार्य है। सेटिंग्स लोड करने का सही तरीका लचीलापन, सुरक्षा और डिप्लॉयमेंट की सुविधा पर निर्भर करता है। Rust इकोसिस्टम में कई परिपक्व समाधान मौजूद हैं जो फ़ाइलों, पर्यावरण चरों और अन्य स्रोतों से कॉन्फ़िगरेशन पढ़ने की अनुमति देते हैं। इस लेख में हम तीन लोकप्रिय टूल्स पर चर्चा करेंगे: config, envy और dotenvy।



1. config लाइब्रेरी — सार्वभौमिक कॉन्फ़िगरेशन प्रबंधक



config एक शक्तिशाली लाइब्रेरी है जो पदानुक्रमित कॉन्फ़िगरेशन लोड करने के लिए है। यह कई फ़ॉर्मेट (JSON, TOML, YAML, HJSON, INI) के साथ-साथ पर्यावरण चर और दूरस्थ स्रोतों का समर्थन करती है। मुख्य विचार सभी स्रोतों को एक एकल सेटिंग्स ट्री में संयोजित करना है।



इंस्टॉलेशन

[dependencies]config = "0.14"serde = { version = "1.0", features = ["derive"] }


उपयोग का उदाहरण

use config::{Config, File, Environment};use serde::Deserialize;

#[derive(Debug, Deserialize)]struct AppConfig { server: ServerConfig, database: DatabaseConfig,}

#[derive(Debug, Deserialize)]struct ServerConfig { host: String, port: u16,}

#[derive(Debug, Deserialize)]struct DatabaseConfig { url: String, pool_size: u32,}

fn load_config() -> Result<AppConfig, config::ConfigError> { let cfg = Config::builder() .add_source(File::with_name("config/default")) // बुनियादी सेटिंग्स .add_source(File::with_name("config/local").required(false)) // स्थानीय ओवरराइड .add_source(Environment::with_prefix("APP")) // APP_ प्रीफिक्स वाले पर्यावरण चर .build()?;

cfg.try_deserialize()}

fn main() { match load_config() { Ok(config) => println!("Loaded config: {:?}", config), Err(e) => eprintln!("Config error: {}", e), }}


लाइब्रेरी स्वचालित रूप से स्रोतों को मर्ज करती है: बाद के स्रोतों के मान पिछले स्रोतों को ओवरराइट करते हैं। यह आसानी से एक पदानुक्रम व्यवस्थित करने की अनुमति देता है: default → environment → local override।



2. envy लाइब्रेरी — पर्यावरण चरों से कॉन्फ़िगरेशन



envy एक न्यूनतम लाइब्रेरी है जो विशेष रूप से पर्यावरण चरों से कॉन्फ़िगरेशन लोड करती है। यह 12-फ़ैक्टर अनुप्रयोगों के लिए आदर्श है, जहाँ सेटिंग्स को कोड से अलग रखा जाना चाहिए।



इंस्टॉलेशन

[dependencies]envy = "0.4"serde = { version = "1.0", features = ["derive"] }


उपयोग का उदाहरण

use serde::Deserialize;

#[derive(Debug, Deserialize)]struct AppConfig { #[serde(rename = "SERVER_HOST")] host: String, #[serde(rename = "SERVER_PORT")] port: u16, #[serde(rename = "DATABASE_URL")] db_url: String,}

fn load_config() -> Result<AppConfig, envy::Error> { envy::from_env::<AppConfig>()}

fn main() { match load_config() { Ok(config) => println!("Env config: {:?}", config), Err(e) => eprintln!("Envy error: {}", e), }}


काम करने के लिए बस पर्यावरण चर सेट करें:

export SERVER_HOST=127.0.0.1export SERVER_PORT=8080export DATABASE_URL=postgres://user:pass@localhost/db


envy विभाजकों के माध्यम से नेस्टेड संरचनाओं का समर्थन करता है (जैसे, DATABASE__HOST), साथ ही डिफ़ॉल्ट मान वाले वैकल्पिक फ़ील्ड भी।



3. dotenvy लाइब्रेरी — .env फ़ाइलें लोड करना



dotenvy लोकप्रिय dotenv लाइब्रेरी का एक फ़ोर्क है, जो .env फ़ाइलों से पर्यावरण चर लोड करने के लिए डिज़ाइन किया गया है। यह विशेष रूप से डेवलपमेंट के दौरान उपयोगी है, जब स्थानीय सेटिंग्स को जल्दी से सेट करने की आवश्यकता होती है।



इंस्टॉलेशन

[dependencies]dotenvy = "0.15"<                    

अनुशंसाएँ