您正在调用envy方法,该方法为您完成所有解析和填充。问题是你
它只在
match
:
match envy::from_env::<Environment>() {
Ok(environment) => println!("{:#?}", environment), // gone now
Err(error) => panic!("{:#?})", error),
};
你不需要扔掉它:
let environment = match envy::from_env::<Environment>() {
Ok(environment) => {
println!("{:#?}", environment);
environment // Now the entire `match` evaluates to `environment`
}
Err(error) => panic!("{:#?})", error),
};
expect
:
let environment: Environment = envy::from_env()
.expect("Couldn't parse environment");
println!("{:#?}", environment);
完整示例:
extern crate serde;
#[macro_use]
extern crate serde_derive;
extern crate envy;
#[derive(Debug, Deserialize)]
struct Environment {
username: String,
port: u16,
}
fn main() {
let mut environment: Environment = envy::from_env()
.expect("Couldn't parse environment variables");
println!("{:#?}", environment);
}
$ USERNAME=overflow PORT=8787 cargo run
Environment {
username: "overflow",
port: 8787
}