hyperi-rustlib 2.8.6

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.
Documentation
// Project:   hyperi-rustlib
// File:      src/http_server/error.rs
// Purpose:   HTTP server error types
// Language:  Rust
//
// License:   BUSL-1.1
// Copyright: (c) 2026 HYPERI PTY LIMITED

//! HTTP server error types.

use std::io;
use thiserror::Error;

/// Errors that can occur when running the HTTP server.
#[derive(Debug, Error)]
pub enum HttpServerError {
    /// Failed to bind to the specified address.
    #[error("failed to bind to {address}: {source}")]
    Bind {
        address: String,
        #[source]
        source: io::Error,
    },

    /// Failed to load TLS configuration.
    #[error("failed to load TLS configuration: {0}")]
    TlsConfig(String),

    /// Server encountered an I/O error.
    #[error("server I/O error: {0}")]
    Io(#[from] io::Error),

    /// Graceful shutdown timed out.
    #[error("graceful shutdown timed out after {timeout_secs}s")]
    ShutdownTimeout { timeout_secs: u64 },

    /// Server error during operation.
    #[error("server error: {0}")]
    Server(String),
}