KeyEnv Rust SDK
Official Rust SDK for KeyEnv - Secrets management made simple.
Installation
Add to your Cargo.toml:
[]
= "1.0"
= { = "1", = ["full"] }
Or using cargo:
Quick Start
use KeyEnv;
use env;
async
Configuration
use KeyEnv;
use Duration;
let client = builder
.token // Required
.base_url // Optional
.timeout // Optional, default 30s
.cache_ttl // Optional, 0 disables caching
.build?;
Loading Secrets
Load into Environment
The simplest way to use secrets in your application:
let count = client.load_env.await?;
println!;
// Now use them
println!;
Export as HashMap
Get secrets as a HashMap:
let secrets = client.export_secrets_as_map.await?;
println!;
Export with Metadata
Get secrets with full metadata:
let secrets = client.export_secrets.await?;
for secret in secrets
Managing Secrets
Get a Single Secret
let secret = client.get_secret.await?;
println!;
Set a Secret
Creates or updates a secret:
client.set_secret.await?;
// With description
client.set_secret_with_description.await?;
Delete a Secret
client.delete_secret.await?;
Bulk Operations
Bulk Import
use ;
let result = client.bulk_import.await?;
println!;
Generate .env File
use fs;
let content = client.generate_env_file.await?;
write?;
Projects & Environments
List Projects
let projects = client.list_projects.await?;
for project in projects
Get Project Details
let project = client.get_project.await?;
println!;
for env in project.environments
Error Handling
use ;
match client.get_secret.await
Caching
Enable caching for better performance:
let client = builder
.token
.cache_ttl // 5 minutes
.build?;
// Cached for 5 minutes
let secrets = client.export_secrets.await?;
// Clear cache manually
client.clear_cache.await;
// Or clear all cache
client.clear_all_cache.await;
API Reference
Builder Options
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
token |
String |
Yes | - | Service token |
base_url |
String |
No | https://api.keyenv.dev |
API base URL |
timeout |
Duration |
No | 30s |
Request timeout |
cache_ttl |
Duration |
No | 0 |
Cache TTL (0 = disabled) |
Methods
| Method | Description |
|---|---|
get_current_user() |
Get current user/token info |
list_projects() |
List all accessible projects |
get_project(id) |
Get project with environments |
list_environments(project_id) |
List environments |
list_secrets(project_id, env) |
List secret keys (no values) |
export_secrets(project_id, env) |
Export secrets with values |
export_secrets_as_map(project_id, env) |
Export as HashMap |
get_secret(project_id, env, key) |
Get single secret |
set_secret(project_id, env, key, value) |
Create or update secret |
set_secret_with_description(...) |
Create/update with description |
delete_secret(project_id, env, key) |
Delete secret |
bulk_import(project_id, env, secrets, opts) |
Bulk import secrets |
load_env(project_id, env) |
Load secrets into env vars |
generate_env_file(project_id, env) |
Generate .env file content |
get_secret_history(project_id, env, key) |
Get secret version history |
list_permissions(project_id, env) |
List permissions |
set_permission(project_id, env, user_id, role) |
Set user permission |
delete_permission(project_id, env, user_id) |
Delete permission |
bulk_set_permissions(...) |
Bulk set permissions |
get_my_permissions(project_id) |
Get current user's permissions |
get_project_defaults(project_id) |
Get default permissions |
set_project_defaults(project_id, defaults) |
Set default permissions |
clear_cache(project_id, env) |
Clear cached secrets |
clear_all_cache() |
Clear all cached data |
Examples
Actix Web Server
use ;
use KeyEnv;
use env;
async
async
Lambda Function
use KeyEnv;
use ;
use Lazy;
use env;
static CLIENT: = new;
async
async
Features
rustls- Use rustls for TLS (recommended for most platforms)native-tls- Use native TLS (OpenSSL on Linux, Secure Transport on macOS)
[]
= { = "1.0", = ["rustls"] }
License
MIT License - see LICENSE for details.