volo_boot 0.1.5

Simplifies bootstrapping for volo-grpc and volo-http services. / 简化 volo-grpc 和 volo-http 服务的启动。
Documentation
#![cfg_attr(docsrs, feature(doc_cfg))]

use std::net::SocketAddr;

use err_exit::err_exit;

#[cfg(feature = "http")]
mod http;

#[cfg(feature = "http")]
pub use http::http;

#[cfg(feature = "grpc")]
mod grpc;

#[cfg(feature = "grpc")]
pub use grpc::grpc;

pub async fn init() {
  log_init::init();
  match static_::init().await {
    Ok(()) => (),
    Err(err) => err_exit!("static init error: {err}"),
  }
}

pub fn env_addr(name: &str, default: u16) -> SocketAddr {
  macro_rules! default {
    () => {
      SocketAddr::from(([0, 0, 0, 0], default))
    };
  }
  let addr = if let Ok(addr) = std::env::var(name) {
    match addr.parse() {
      Ok(addr) => addr,
      Err(err) => {
        log::error!("{name}={addr} ADDR PARSE ERROR: {err}");
        default!()
      }
    }
  } else {
    default!()
  };
  log::info!("{name} {addr}");
  addr
}