Expand description
Pluggable secrets backend — secrets::Secrets trait + secrets::EnvSecrets
secrets::InMemorySecrets. Secrets manager — pluggable backend for retrieving secret values.
§Quick start
ⓘ
use rustango::secrets::{Secrets, EnvSecrets};
use std::sync::Arc;
let secrets: Arc<dyn Secrets> = Arc::new(EnvSecrets::with_prefix("MYAPP_"));
let db_password = secrets.get("DB_PASSWORD").await?; // looks up MYAPP_DB_PASSWORD§Backends
| Backend | Description |
|---|---|
[EnvSecrets] | Reads from environment variables (with optional prefix) |
[InMemorySecrets] | Tests — secrets in a HashMap |
| Vault / AWS / GCP | Plug your own — implement Secrets for the SDK of your choice |
§Example: AWS Secrets Manager
ⓘ
use rustango::secrets::{Secrets, SecretsError};
use async_trait::async_trait;
pub struct AwsSecrets { client: aws_sdk_secretsmanager::Client }
#[async_trait]
impl Secrets for AwsSecrets {
async fn get(&self, key: &str) -> Result<Option<String>, SecretsError> {
let result = self.client.get_secret_value().secret_id(key).send().await
.map_err(|e| SecretsError::Backend(e.to_string()))?;
Ok(result.secret_string)
}
}Structs§
- EnvSecrets
- Environment-variable backed secrets store.
- InMemory
Secrets - In-memory secrets store — for tests.
Arc<Mutex<HashMap>>inside so you can mutate after construction.
Enums§
Traits§
- Secrets
- Pluggable secrets backend.
Type Aliases§
- Boxed
Secrets Arc<dyn Secrets>alias.