Expand description
§hyperi-rustlib
There’s plenty of sage advice out there about how to run Rust services in production at scale – config cascades, structured logging, masking secrets, multi-backend secrets management, Prometheus, OpenTelemetry, Kafka transports, tiered disk-spillover sinks, adaptive worker pools, graceful shutdown – but almost none of it as code you can just install and use.
This is that code.
Opinionated, drop-in, working out of the box. The patterns from blog posts, watercooler chats and beers with your Google mates as actual library – not a framework you assemble from twenty crates and 8 weeks of munging.
Built as the foundation for HyperI’s PB/hr data services. Generic enough that you don’t need to be at HyperI to use it.
Full reference docs live under docs/.
Start at docs/README.md
for the entry-point index.
§Quick Start
use hyperi_rustlib::{env, config, logger, metrics};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Detect runtime environment
let environment = env::Environment::detect();
println!("Running in: {:?}", environment);
// Initialise logger (respects LOG_LEVEL env var)
logger::setup_default()?;
// Load configuration with 7-layer cascade
config::setup(config::ConfigOptions {
env_prefix: "MYAPP".into(),
..Default::default()
})?;
// Access config
let cfg = config::get();
let db_host = cfg.get_string("database.host").unwrap_or_default();
// Create metrics
let metrics_mgr = metrics::MetricsManager::new("myapp");
let _counter = metrics_mgr.counter("requests_total", "Total requests processed");
tracing::info!(db_host = %db_host, "Application started");
Ok(())
}See docs/CORE-PILLARS.md in the repository for the auto-wiring architecture.
Re-exports§
pub use env::Environment;pub use env::RuntimeContext;pub use env::runtime_context;pub use kafka_config::DfeSource;pub use kafka_config::KafkaConfigError;pub use kafka_config::KafkaConfigResult;pub use kafka_config::ServiceRole;pub use kafka_config::TOPIC_SUFFIX_LAND;pub use kafka_config::TOPIC_SUFFIX_LOAD;pub use kafka_config::config_from_file;pub use kafka_config::config_from_properties_str;pub use sensitive::SensitiveString;pub use sensitive::expose_during;pub use runtime::RuntimePaths;runtimepub use health::HealthRegistry;healthpub use health::HealthStatus;healthpub use config::Config;configpub use config::ConfigError;configpub use config::ConfigOptions;configpub use config::flat_env::ApplyFlatEnv;configpub use config::flat_env::EnvVarDoc;configpub use config::flat_env::Normalize;configpub use config::reloader::ConfigReloader;config-reloadpub use config::reloader::ReloaderConfig;config-reloadpub use logger::LogFormat;loggerpub use logger::LoggerError;loggerpub use logger::LoggerOptions;loggerpub use logger::SecurityEvent;loggerpub use logger::SecurityOutcome;loggerpub use logger::ThrottleConfig;loggerpub use metrics::DfeMetrics;metricsorotel-metricspub use metrics::MetricsConfig;metricsorotel-metricspub use metrics::MetricsError;metricsorotel-metricspub use metrics::MetricsManager;metricsorotel-metricspub use metrics::OtelMetricsConfig;otel-metricspub use metrics::OtelProtocol;otel-metricspub use transport::CommitToken;transportpub use transport::Message;transportpub use transport::PayloadFormat;transportpub use transport::Record;transportpub use transport::RecordMeta;transportpub use transport::SendResult;transportpub use transport::Transport;transportpub use transport::TransportConfig;transportpub use transport::TransportError;transportpub use transport::TransportResult;transportpub use transport::TransportType;transportpub use transport::WorkBatch;transportpub use http_server::HttpServer;http-serverpub use http_server::HttpServerConfig;http-serverpub use http_server::HttpServerError;http-serverpub use spool::Spool;spoolpub use spool::SpoolConfig;spoolpub use spool::SpoolError;spoolpub use tiered_sink::CircuitBreaker;tiered-sinkpub use tiered_sink::CircuitState;tiered-sinkpub use tiered_sink::CompressionCodec;tiered-sinkpub use tiered_sink::DrainStrategy;tiered-sinkpub use tiered_sink::OrderingMode;tiered-sinkpub use tiered_sink::Sink;tiered-sinkpub use tiered_sink::SinkError;tiered-sinkpub use tiered_sink::TieredSink;tiered-sinkpub use tiered_sink::TieredSinkConfig;tiered-sinkpub use tiered_sink::TieredSinkError;tiered-sinkpub use secrets::CacheConfig;secretspub use secrets::FileProvider;secretspub use secrets::RotationEvent;secretspub use secrets::SecretMetadata;secretspub use secrets::SecretProvider;secretspub use secrets::SecretSource;secretspub use secrets::SecretValue;secretspub use secrets::SecretsConfig;secretspub use secrets::SecretsError;secretspub use secrets::SecretsManager;secretspub use secrets::SecretsResult;secretspub use secrets::OpenBaoAuth;secrets-vaultpub use secrets::OpenBaoConfig;secrets-vaultpub use secrets::OpenBaoProvider;secrets-vaultpub use directory_config::ChangeEvent;directory-configpub use directory_config::ChangeOperation;directory-configpub use directory_config::DirectoryConfigError;directory-configpub use directory_config::DirectoryConfigResult;directory-configpub use directory_config::DirectoryConfigStore;directory-configpub use directory_config::DirectoryConfigStoreConfig;directory-configpub use directory_config::WriteMode;directory-configpub use directory_config::WriteResult;directory-configpub use memory::MemoryGuard;memorypub use memory::MemoryGuardConfig;memorypub use memory::MemoryPressure;memorypub use memory::detect_memory_limit;memorypub use scaling::ComponentSnapshot;scalingpub use scaling::GateType;scalingpub use scaling::PressureSnapshot;scalingpub use scaling::RateWindow;scalingpub use scaling::ScalingComponent;scalingpub use scaling::ScalingPressure;scalingpub use scaling::ScalingPressureConfig;scalingpub use governor::Admit;governorpub use governor::ByteBudgetConfig;governorpub use governor::ByteBudgetController;governorpub use governor::GateActuator;governorpub use governor::Hysteresis;governorpub use governor::InboundGate;governorpub use governor::MemoryPressureSource;governorpub use governor::NoopActuator;governorpub use governor::ObservingActuator;governorpub use governor::Pressure;governorpub use governor::PressureSource;governorpub use governor::SelfRegulationConfig;governorpub use governor::SelfRegulationGovernor;governorpub use governor::SelfRegulationProfile;governorpub use governor::UnifiedPressure;governorpub use governor::UnifiedPressureSnapshot;governorpub use worker::AccumulatorConfig;worker-batchorworker-poolorworkerpub use worker::AccumulatorFull;worker-batchorworker-poolorworkerpub use worker::AdaptiveWorkerPool;worker-batchorworker-poolorworkerpub use worker::BatchAccumulator;worker-batchorworker-poolorworkerpub use worker::BatchDrainer;worker-batchorworker-poolorworkerpub use worker::BatchPipeline;worker-batchorworker-poolorworkerpub use worker::BatchProcessor;worker-batchorworker-poolorworkerpub use worker::PipelineStats;worker-batchorworker-poolorworkerpub use worker::PipelineStatsSnapshot;worker-batchorworker-poolorworkerpub use worker::ScalingDecision;worker-batchorworker-poolorworkerpub use worker::ScalingInput;worker-batchorworker-poolorworkerpub use worker::WorkerPoolConfig;worker-batchorworker-poolorworkerpub use cli::CliError;clipub use cli::CommonArgs;clipub use cli::StandardCommand;clipub use cli::VersionInfo;clipub use cli::DfeApp;cli-servicepub use cli::ServiceRuntime;cli-servicepub use io::AsyncNdjsonWriter;iopub use io::FileWriterConfig;iopub use io::NdjsonWriter;iopub use io::RotationPeriod;iopub use dlq::Dlq;dlqpub use dlq::DlqBackend;dlqpub use dlq::DlqConfig;dlqpub use dlq::DlqEntry;dlqpub use dlq::DlqError;dlqpub use dlq::DlqMode;dlqpub use dlq::DlqSource;dlqpub use dlq::FileDlqConfig;dlqpub use dlq::HttpDlqConfig;dlq-httppub use dlq::RedisDlqConfig;dlq-redispub use output::FileOutput;output-filepub use output::FileOutputConfig;output-filepub use output::OutputError;output-filepub use expression::ALLOWED_FUNCTIONS;expressionpub use expression::DISALLOWED_FUNCTIONS;expressionpub use expression::ExpressionError;expressionpub use expression::ExpressionResult;expressionpub use expression::build_context;expressionpub use expression::compile;expressionpub use expression::evaluate;expressionpub use expression::evaluate_condition;expressionpub use expression::validate;expressionpub use deployment::ContractMismatch;deploymentpub use deployment::DeploymentContract;deploymentpub use deployment::DeploymentError;deploymentpub use deployment::HealthContract;deploymentpub use deployment::KedaConfig;deploymentpub use deployment::KedaContract;deploymentpub use version_check::VersionCheck;version-checkpub use version_check::VersionCheckConfig;version-checkpub use version_check::VersionCheckResponse;version-checkpub use concurrency::Actor;concurrencypub use concurrency::ActorConfig;concurrencypub use concurrency::ActorError;concurrencypub use concurrency::ActorHandle;concurrencypub use concurrency::ActorJoinHandle;concurrencypub use concurrency::BackgroundSink;concurrencypub use concurrency::BackgroundSinkConfig;concurrencypub use concurrency::BackgroundSinkHandle;concurrencypub use concurrency::DrainError;concurrencypub use concurrency::Overflow;concurrencypub use concurrency::PeriodicTask;concurrencypub use concurrency::PeriodicWorker;concurrencypub use concurrency::SinkDrain;concurrencypub use concurrency::TickError;concurrency
Modules§
- cache
cache - In-memory cache with per-source TTL, metrics, and invalidation.
- cli
cli - Standard CLI framework for DFE Rust services.
- concurrency
concurrency - Async concurrency primitives.
- config
config - Configuration management with 8-layer cascade.
- database
database - Database connection string builders.
- deployment
deployment - Deployment contract validation and generation for Kubernetes/Helm/Docker.
- directory_
config directory-config - Directory Config Store
- dlq
dlq - Unified dead letter queue (DLQ) with pluggable backends.
- env
- Runtime environment detection.
- expression
expression - CEL expression evaluation – compile, evaluate, validate.
- governor
governor - Unified self-regulation governor.
- health
health - Unified health registry for service readiness and liveness.
- http_
client http - Production HTTP client with automatic retries and timeouts.
- http_
server http-server - High-performance HTTP server built on axum.
- io
io - Shared NDJSON file I/O primitives.
- kafka_
config - Shared Kafka librdkafka configuration profiles, merge helper, and file loader.
- logger
logger - Structured logging with JSON output and sensitive data masking.
- memory
memory - Memory management and OOM prevention.
- metrics
metricsorotel-metrics - Metrics with Prometheus and/or OpenTelemetry backends.
- otel_
tracing otel-tracing - OpenTelemetry distributed tracing – span export via OTLP.
- output
output-file - File output sink for local NDJSON event writing.
- runtime
runtime - Runtime path management.
- scaling
scaling - Scaling pressure calculation for autoscaler integration.
- secrets
secrets - Secrets management with multi-provider support and resilient caching.
- sensitive
- Sensitive string type for fields that must never be exposed.
- shutdown
shutdown - Unified graceful shutdown manager.
- spool
spool - Disk-backed async FIFO queue with optional zstd compression.
- strmatch
strmatch - Regex-shaped patterns, fast-path dispatch.
- tiered_
sink tiered-sink - Tiered sink with automatic disk spillover for resilient message delivery.
- transport
transport - Transport Abstraction Layer
- version_
check version-check - Startup version check.
- worker
worker-batchorworker-poolorworker - Adaptive worker pool and batch processing framework.
Constants§
- VERSION
- Library version
Functions§
- init
configandlogger - Initialise all library components with default settings.