# Jealousy Jealousy is a simple wrapper trait around the [envy](https://crates.io/crates/envy) crate. The envy crate allows for easy deserialization of any structure from the environment. This crate adds the following features on top of that: - `FromEnv` trait that can be implemented on any deserializable struct - Logging surrounding the envy crate and errors, for easier debugging - derive macro (behind `derive` feature) to not have to write the boilerplate ## Installation You can either use `cargo add jealousy` or add `jealousy = "0.1.3"` to the dependencies in your Cargo.toml. ### features - `derive` Allows for using the derive macro instead of having to implement the trait ## Usage The default impl of from_env should be enough for most use cases. The following will deserialize the struct's fields from the following environment variables: - `CONFIG_VAR1` - `CONFIG_VAR2` Both methods, the trait AND the derive macro, use the default impl of the from_env method. ### Trait ```rust use serde::Deserialize; use jealousy::FromEnv; #[derive(Deserialize)] struct Config { var1: String, var2: u16, } impl FromEnv for Config { const PREFIX: &'static str = "CONFIG"; } ``` ### Derive _(requires feature: `derive`)_ The derive macro mainly prevents the boilerplate you see above. It is functionally identical in every other way. ```rust use serde::Deserialize; use jealousy::FromEnv; #[derive(Deserialize, FromEnv)] #[from_env(prefix = "CONFIG")] struct Config { var1: String, var2: u16, } ```