# envcast_derive
[](https://crates.io/crates/envcast_derive)
[](https://github.com/rust-lang/rust/releases/tag/1.70.0)
[](https://github.com/neamaddin/envcast/actions/workflows/ci.yml)
[](https://docs.rs/envcast_derive/)
## Overview
`envcast_derive` provides the `FromEnv` procedural macro for Rust structs.
It generates a `get()` method that resolves struct fields using the following order:
1. Environment variables (field name as-is, then uppercase)
2. `.env` files (default `.env`, then `DOTENV_CONFIG_FILE`), lowercase and uppercase keys
3. `#[default = "..."]` attribute
4. `Default::default()`
Each field type must implement:
- `std::str::FromStr`
- `Default`
## Usage
```rust
use envcast::FromEnv;
#[derive(FromEnv)]
pub struct Config {
#[default = 50]
pub int_field: i32,
#[default = 50.0]
pub float_field: f32,
#[default = "Rust"]
pub string_field: String,
#[default = true]
pub bool_field: bool,
}
```
Then:
```rust
let cfg = Config::get();
```
`Config::get()` returns a struct with all fields resolved according to the priority rules above.
## License
MIT