use serde::{Deserialize, Serialize};
use star_toml::{
loader::{ConfigLifecycle, TrustedLoader},
Validate, Validator,
};
#[derive(Debug, Deserialize, Serialize, Clone)]
struct AppConfig {
name: String,
port: u16,
}
impl Validate for AppConfig {
fn validate(&self, v: &mut Validator) {
v.check_non_empty("name", &self.name);
v.check_range("port", self.port, 1024..=65535);
}
}
impl ConfigLifecycle for AppConfig {}
fn main() {
println!("--- Exploratory Unknown Fields Example ---");
let loader =
TrustedLoader::new().layer_file("examples/config_patterns/invalid_unknown_field.toml");
match loader.load_admitted_exploratory::<AppConfig>() {
Ok(admitted) => {
println!("Exploratory Admission Successful (Unknown fields ignored)!");
println!("Value: {:?}", admitted.value());
println!("Witness: {}", admitted.witness().hash());
}
Err(e) => {
println!("Failed to load in exploratory mode: {:?}", e);
}
}
}