diff options
author | Toby Vincent <tobyv13@gmail.com> | 2022-03-24 19:43:55 -0500 |
---|---|---|
committer | Toby Vincent <tobyv13@gmail.com> | 2022-03-24 19:43:55 -0500 |
commit | 6d61152a981f6d4568836458d8e566f7b991a9bc (patch) | |
tree | d6cc7ea27d86cc735e2c4843bf5189af102da92c /zoned/src/main.rs | |
parent | 252f607064e760b274fd1e9e83ea520573b9e2f6 (diff) |
refactor: clean up main
Diffstat (limited to 'zoned/src/main.rs')
-rw-r--r-- | zoned/src/main.rs | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/zoned/src/main.rs b/zoned/src/main.rs index f275e7a..8787a4a 100644 --- a/zoned/src/main.rs +++ b/zoned/src/main.rs @@ -4,8 +4,7 @@ use figment::{ providers::{Env, Format, Serialized, Toml}, Figment, }; -use std::{net::SocketAddr, sync::Arc}; -use tracing::info; +use tracing::{debug_span, info, Instrument}; use zoned::{build_routes, Config, State}; #[tokio::main] @@ -16,23 +15,17 @@ async fn main() -> Result<(), zoned::Error> { .merge(Toml::file(Env::var_or("ZONED_CONFIG", "/etc/zoned/Config.toml")).nested()) .merge(Env::prefixed("ZONED_")); - let config = match Config::try_from(figment) { - Ok(config) => config, - Err(err) => return Err(err), - }; + let config = Config::try_from(figment)?; - let addr = SocketAddr::from((config.ip_address, config.port)); - - let shared_state = match State::try_from(config) { - Ok(config) => Arc::new(config), - Err(err) => return Err(err), - }; + let shared_state = State::try_from(&config)?.into_arc(); let routes = build_routes().layer(Extension(shared_state)); - info!("listening on {}", addr); - axum::Server::bind(&addr) + info!(ip_address = %config.ip_address, port = %config.port, "Server listening"); + + axum::Server::bind(&config.into()) .serve(routes.into_make_service()) + .instrument(debug_span!("read_task").or_current()) .await .context("Axum error") .map_err(zoned::Error::from) |