Crates.io | jealousy |
lib.rs | jealousy |
version | 0.1.5 |
source | src |
created_at | 2023-08-28 14:47:59.271765 |
updated_at | 2023-09-26 15:17:23.450735 |
description | A wrapper arount the envy crate, providing an easily implementable trait |
homepage | |
repository | https://codeberg.org/OpenThingies/jealousy |
max_upload_size | |
id | 957044 |
size | 6,287 |
Jealousy is a simple wrapper trait around the 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 structderive
feature) to not have to write the boilerplateYou can either use cargo add jealousy
or
add jealousy = "0.1.3"
to the dependencies in your Cargo.toml.
derive
Allows for using the derive macro instead of having to implement the traitThe 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.
use serde::Deserialize;
use jealousy::FromEnv;
#[derive(Deserialize)]
struct Config {
var1: String,
var2: u16,
}
impl FromEnv for Config {
const PREFIX: &'static str = "CONFIG";
}
derive
)The derive macro mainly prevents the boilerplate you see above. It is functionally identical in every other way.
use serde::Deserialize;
use jealousy::FromEnv;
#[derive(Deserialize, FromEnv)]
#[from_env(prefix = "CONFIG")]
struct Config {
var1: String,
var2: u16,
}