rs-zero 0.1.1

Rust-first microservice framework inspired by go-zero engineering practices
Documentation
use std::time::Duration;

/// Optional etcd authentication configuration.
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct EtcdAuthConfig {
    /// Username.
    pub username: String,
    /// Password.
    pub password: String,
}

/// etcd discovery adapter configuration.
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct EtcdDiscoveryConfig {
    /// etcd endpoints.
    pub endpoints: Vec<String>,
    /// Key prefix.
    pub prefix: String,
    /// Lease TTL in seconds.
    pub lease_ttl: i64,
    /// Watch reconnect interval.
    pub reconnect_interval: Duration,
    /// Optional authentication.
    pub auth: Option<EtcdAuthConfig>,
}

impl Default for EtcdDiscoveryConfig {
    fn default() -> Self {
        Self {
            endpoints: vec!["http://127.0.0.1:2379".to_string()],
            prefix: "/rs-zero".to_string(),
            lease_ttl: 30,
            reconnect_interval: Duration::from_secs(1),
            auth: None,
        }
    }
}