Skip to main content

Module secrets

Module secrets 

Source
Expand description

Pluggable secrets backend — secrets::Secrets trait + secrets::EnvSecrets

§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

BackendDescription
[EnvSecrets]Reads from environment variables (with optional prefix)
[InMemorySecrets]Tests — secrets in a HashMap
Vault / AWS / GCPPlug 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.
InMemorySecrets
In-memory secrets store — for tests. Arc<Mutex<HashMap>> inside so you can mutate after construction.

Enums§

SecretsError

Traits§

Secrets
Pluggable secrets backend.

Type Aliases§

BoxedSecrets
Arc<dyn Secrets> alias.