| Crates.io | env_init |
| lib.rs | env_init |
| version | 0.1.2 |
| created_at | 2025-04-16 05:03:56.500122+00 |
| updated_at | 2025-04-17 21:56:06.650796+00 |
| description | Small crate to help initializing environment structs |
| homepage | |
| repository | https://github.com/LunarParfait/env_init |
| max_upload_size | |
| id | 1635902 |
| size | 15,962 |
This is a small crate to help initializing environment variable structs, accepting any environment provider and by default automatically parsing the strings into their corresponding types in the struct.
.env
SOME_INT=42
SOME_STR=Hello
SOME_OTHER_STR=World
main.rs
use env_init::{Env, EnvGetter, EnvOnce};
#[derive(Debug)]
pub struct MyEnv {
some_int: i32,
some_other_int: i32,
opt_int: Option<i32>,
some_str: &'static str,
owned_str: String
}
impl Env for MyEnv {
fn new() -> Self {
// Defining a getter that calls dotenvy::var
let g = EnvGetter::new(|x| dotenvy::var(x));
Self {
some_int: g.owned_var("SOME_INT"),
some_other_int: g.owned_var_or("SOME_OTHER_INT", 100),
opt_int: g.owned_var_try("SOME_OPTIONAL_INT").ok(),
some_str: g.var::<String>("SOME_STR").as_str(),
owned_str: g.owned_var("SOME_OTHER_STR"),
}
}
}
// Our global environment object
pub static ENV: EnvOnce<MyEnv> = EnvOnce::new();
fn main() {
dotenvy::dotenv().unwrap();
ENV.init();
assert_eq!(ENV.some_int, 42);
assert_eq!(ENV.some_other_int, 100);
assert_eq!(ENV.opt_int, None);
assert_eq!(ENV.some_str, "Hello");
assert_eq!(ENV.owned_str, "World");
}