From 65c290a240346a33ac76024ea5c8c16f3fb83b77 Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Tue, 8 Nov 2022 20:38:02 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20[config]=20Inicializa=20la?= =?UTF-8?q?=20configuraci=C3=B3n=20global?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pagetop/src/app/application.rs | 3 +++ pagetop/src/config.rs | 16 ++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/pagetop/src/app/application.rs b/pagetop/src/app/application.rs index 293b1e0d..db912a99 100644 --- a/pagetop/src/app/application.rs +++ b/pagetop/src/app/application.rs @@ -19,6 +19,9 @@ impl Application { // Rótulo de presentación. super::banner::print_on_startup(); + // Inicializa la configuración global. + LazyStatic::force(&super::config::SETTINGS); + // Inicia registro de trazas y eventos. LazyStatic::force(&super::tracing::TRACING); diff --git a/pagetop/src/config.rs b/pagetop/src/config.rs index dfb7df49..41d4d211 100644 --- a/pagetop/src/config.rs +++ b/pagetop/src/config.rs @@ -42,14 +42,15 @@ //! # Cómo añadir ajustes de configuración //! //! Para proporcionar a tu **aplicación** o **módulo** sus propios ajustes de configuración, añade -//! [*serde*](https://docs.rs/serde) en las dependencias de tu archivo *Cargo.toml*: +//! [*serde*](https://docs.rs/serde) en las dependencias de tu archivo *Cargo.toml* habilitando la +//! característica `derive`: //! //! ```toml //! [dependencies] //! serde = { version = "1.0", features = ["derive"] } //! ``` //! -//! Declara ([`LazyStatic`]) e inicializa tus nuevos ajustes con tipos seguros +//! Y luego declara ([`LazyStatic`]) e inicializa tus ajustes con tipos seguros //! ([`config::try_into()`](try_into)) y valores predefinidos //! ([`predefined_settings!`](crate::predefined_settings)): //! @@ -80,16 +81,19 @@ //! }); //! ``` //! -//! De hecho, así se declaran e inicializan los ajustes globales de la configuración -//! ([`SETTINGS`](crate::app::config::SETTINGS)). +//! De hecho, esta es la forma en la que se declaran e inicializan los ajustes globales de la +//! configuración ([`SETTINGS`](crate::app::config::SETTINGS)). //! //! Usa la sintaxis TOML para añadir tu nueva sección `[myapp]` en los archivos de configuración, -//! del mismo modo que `[log]` o `[server]` hacen para los ajustes globales +//! del mismo modo que se añaden `[log]` o `[server]` en los ajustes globales //! ([`Settings`](crate::app::config::Settings)). //! //! Se recomienda inicializar todos los ajustes con valores predefinidos, o utilizar la notación //! `Option` si van a ser tratados en el código como opcionales. //! +//! Si no pueden inicializarse correctamente los ajustes de configuración, entonces la aplicación +//! ejecutará un panic! y detendrá la ejecución. +//! //! Los ajustes de configuración siempre son de sólo lectura. //! //! @@ -186,7 +190,7 @@ where settings.set_default(key, *value).unwrap(); } match settings.try_into() { - Ok(c) => c, + Ok(s) => s, Err(e) => panic!("Error parsing settings: {}", e), } }