Rust 的 config
库支持多种配置文件格式,包括但不限于以下几种:
Format
trait 定义)config
库Cargo.toml
文件中添加 config
和 serde
依赖。config/default.yml
。serde
的 Deserialize
特性定义与配置文件结构对应的 Rust 结构体。Config::builder()
构建配置加载器,读取并反序列化配置文件到定义的结构体中。以下是一个简单的示例,展示如何使用 config
库加载和解析 YAML 配置文件:
use config::{Config, ConfigError, File};
use serde::Deserialize;
#[derive(Debug, Deserialize)]
pub struct ServerConfig {
pub host: String,
pub port: u16,
}
#[derive(Debug, Deserialize)]
pub struct DatabaseConfig {
pub user: String,
pub password: String,
pub name: String,
}
#[derive(Debug, Deserialize)]
pub struct AppConfig {
pub server: ServerConfig,
pub database: DatabaseConfig,
}
fn load_config() -> Result<AppConfig, ConfigError> {
let mut config = Config::builder()
.add_source(File::with_name("src/config/default.yml").required(true))
.build()?;
config.try_deserialize(&AppConfig::default())
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = load_config()?;
println!("Loaded configuration: {:#?}", config);
Ok(())
}
通过上述步骤和示例代码,你可以轻松地在 Rust 项目中加载和管理不同格式的配置文件。