rs-zero 0.1.1

Rust-first microservice framework inspired by go-zero engineering practices
Documentation
use std::{net::SocketAddr, time::Duration};

/// RPC client configuration.
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RpcClientConfig {
    /// Endpoint URI, for example `http://127.0.0.1:50051`.
    pub endpoint: String,
    /// Connection establishment timeout.
    pub connect_timeout: Duration,
    /// Per-request timeout.
    pub request_timeout: Duration,
}

impl RpcClientConfig {
    /// Creates a client config with practical defaults.
    pub fn new(endpoint: impl Into<String>) -> Self {
        Self {
            endpoint: endpoint.into(),
            connect_timeout: Duration::from_secs(3),
            request_timeout: Duration::from_secs(5),
        }
    }
}

/// RPC server configuration.
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RpcServerConfig {
    /// Logical service name.
    pub name: String,
    /// Server listen address.
    pub addr: SocketAddr,
}

impl RpcServerConfig {
    /// Creates server config.
    pub fn new(name: impl Into<String>, addr: SocketAddr) -> Self {
        Self {
            name: name.into(),
            addr,
        }
    }
}