# Getenv.rs
[](https://unlicense.org)
[](https://blog.rust-lang.org/2024/09/05/Rust-1.81.0.html)
[](https://crates.io/crates/getenv)
[](https://docs.rs/getenv/)
🚧 _We are building in public. This is presently under heavy construction._
## ✨ Features
- Implements a comprehensive set of environment variable getters for
various platforms, programming languages, and tools.
- Provides a wide range of varsets (variable sets), including for:
AWS, Cargo, Conda, CUDA, Docker, Git, Go, Homebrew, Java,
Locale, macOS, NEAR, Node.js, OpenSSL, POSIX, Proxy,
Python, Ruby, Rust, SSH, Windows, and XDG.
- Protects sensitive environment variables (such as API keys) by preventing
their accidental copying, logging, or other exposure, and securely wiping
them from memory when dropped.
- Treats empty environment variables the same as missing ones.
- Supports opting out of any feature using comprehensive feature flags.
- Adheres to the Rust API Guidelines in its [naming conventions].
- 100% free and unencumbered public domain software.
## 🛠️ Prerequisites
- [Rust](https://rust-lang.org) 1.81+
## ⬇️ Installation
### Installation via Cargo
```bash
cargo add getenv
```
### Installation in `Cargo.toml` (with all features enabled)
```toml
[dependencies]
getenv = "0.1"
```
### Installation in `Cargo.toml` (with only specific features enabled)
```toml
[dependencies]
getenv = { version = "0.1", default-features = false, features = ["posix"] }
```
## 👉 Examples
### Importing the library
```rust
use getenv::*;
```
### Reading environment variables
```rust
use getenv::aws::*;
println!("AWS_ACCESS_KEY_ID={:?}", aws_access_key_id());
println!("AWS_SECRET_ACCESS_KEY={:?}", aws_secret_access_key());
```
## 📚 Reference
aws | `aws` | [`use getenv::aws::*;`](https://docs.rs/getenv/latest/getenv/varsets/aws/index.html)
cargo | `cargo` | [`use getenv::cargo::*;`](https://docs.rs/getenv/latest/getenv/varsets/cargo/index.html)
conda | `conda` | [`use getenv::conda::*;`](https://docs.rs/getenv/latest/getenv/varsets/conda/index.html)
cuda | `cuda` | [`use getenv::cuda::*;`](https://docs.rs/getenv/latest/getenv/varsets/cuda/index.html)
docker | `docker` | [`use getenv::docker::*;`](https://docs.rs/getenv/latest/getenv/varsets/docker/index.html)
git | `git` | [`use getenv::git::*;`](https://docs.rs/getenv/latest/getenv/varsets/git/index.html)
go | `go` | [`use getenv::go::*;`](https://docs.rs/getenv/latest/getenv/varsets/go/index.html)
homebrew | `homebrew` | [`use getenv::homebrew::*;`](https://docs.rs/getenv/latest/getenv/varsets/homebrew/index.html)
java | `java` | [`use getenv::java::*;`](https://docs.rs/getenv/latest/getenv/varsets/java/index.html)
locale | `locale` | [`use getenv::locale::*;`](https://docs.rs/getenv/latest/getenv/varsets/locale/index.html)
macos | `macos` | [`use getenv::macos::*;`](https://docs.rs/getenv/latest/getenv/varsets/macos/index.html)
near | `near` | [`use getenv::near::*;`](https://docs.rs/getenv/latest/getenv/varsets/near/index.html)
node | `node` | [`use getenv::node::*;`](https://docs.rs/getenv/latest/getenv/varsets/node/index.html)
openssl | `openssl` | [`use getenv::openssl::*;`](https://docs.rs/getenv/latest/getenv/varsets/openssl/index.html)
posix | `posix` | [`use getenv::posix::*;`](https://docs.rs/getenv/latest/getenv/varsets/posix/index.html)
proxy | `proxy` | [`use getenv::proxy::*;`](https://docs.rs/getenv/latest/getenv/varsets/proxy/index.html)
python | `python` | [`use getenv::python::*;`](https://docs.rs/getenv/latest/getenv/varsets/python/index.html)
ruby | `ruby` | [`use getenv::ruby::*;`](https://docs.rs/getenv/latest/getenv/varsets/ruby/index.html)
rust | `rust` | [`use getenv::rust::*;`](https://docs.rs/getenv/latest/getenv/varsets/rust/index.html)
ssh | `ssh` | [`use getenv::ssh::*;`](https://docs.rs/getenv/latest/getenv/varsets/ssh/index.html)
windows | `windows` | [`use getenv::windows::*;`](https://docs.rs/getenv/latest/getenv/varsets/windows/index.html)
xdg | `xdg` | [`use getenv::xdg::*;`](https://docs.rs/getenv/latest/getenv/varsets/xdg/index.html)
### Integrations
[miette] <sub>(`"miette"`)</sub> | 7.5 | [](https://docs.rs/miette/) | Enhances `dogma::{IriError, UriError}`
[serde] <sub>(`"serde"`)</sub> | 1 | [](https://docs.rs/serde/) | Derives `serde::{Serialize, Deserialize}`
<img width="220" height="1"/> | <img width="110" height="1"/> | <img width="100" height="1"/> |
## 👨💻 Development
```bash
git clone https://github.com/dryrust/getenv.rs.git
```
---
[](https://x.com/intent/post?url=https://github.com/dryrust/getenv.rs&text=Getenv.rs)
[](https://reddit.com/submit?url=https://github.com/dryrust/getenv.rs&title=Getenv.rs)
[](https://news.ycombinator.com/submitlink?u=https://github.com/dryrust/getenv.rs&t=Getenv.rs)
[](https://www.facebook.com/sharer/sharer.php?u=https://github.com/dryrust/getenv.rs)
[](https://www.linkedin.com/sharing/share-offsite/?url=https://github.com/dryrust/getenv.rs)
[naming conventions]: https://rust-lang.github.io/api-guidelines/naming.html
[miette]: https://crates.io/crates/miette
[serde]: https://crates.io/crates/serde