📝 Revisión de documentación y nomenclatura
This commit is contained in:
parent
f85a35b5f4
commit
4d305a7ca4
4 changed files with 64 additions and 67 deletions
|
|
@ -1,9 +1,9 @@
|
||||||
use pagetop::prelude::*;
|
use pagetop::prelude::*;
|
||||||
use pagetop_minimal::component::*;
|
use pagetop_minimal::component::*;
|
||||||
|
|
||||||
use_handle!(MODULE_DEMOHOME);
|
use_handle!(MODULE_HOMEDEMO);
|
||||||
|
|
||||||
use_locale!(LOCALE_DEMOHOME);
|
use_locale!(LOCALE_HOMEDEMO);
|
||||||
|
|
||||||
use_static!(homedemo);
|
use_static!(homedemo);
|
||||||
|
|
||||||
|
|
@ -11,15 +11,15 @@ pub struct HomeDemo;
|
||||||
|
|
||||||
impl ModuleTrait for HomeDemo {
|
impl ModuleTrait for HomeDemo {
|
||||||
fn handle(&self) -> Handle {
|
fn handle(&self) -> Handle {
|
||||||
MODULE_DEMOHOME
|
MODULE_HOMEDEMO
|
||||||
}
|
}
|
||||||
|
|
||||||
fn name(&self) -> L10n {
|
fn name(&self) -> L10n {
|
||||||
L10n::t("module_name", &LOCALE_DEMOHOME)
|
L10n::t("module_name", &LOCALE_HOMEDEMO)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn description(&self) -> L10n {
|
fn description(&self) -> L10n {
|
||||||
L10n::t("module_description", &LOCALE_DEMOHOME)
|
L10n::t("module_description", &LOCALE_HOMEDEMO)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn dependencies(&self) -> Vec<ModuleStaticRef> {
|
fn dependencies(&self) -> Vec<ModuleStaticRef> {
|
||||||
|
|
@ -34,7 +34,7 @@ impl ModuleTrait for HomeDemo {
|
||||||
|
|
||||||
async fn demo(request: service::HttpRequest) -> ResultPage<Markup, FatalError> {
|
async fn demo(request: service::HttpRequest) -> ResultPage<Markup, FatalError> {
|
||||||
Page::new(request)
|
Page::new(request)
|
||||||
.with_title(L10n::t("page_title", &LOCALE_DEMOHOME))
|
.with_title(L10n::t("page_title", &LOCALE_HOMEDEMO))
|
||||||
.with_context(ContextOp::AddStyleSheet(StyleSheet::located(
|
.with_context(ContextOp::AddStyleSheet(StyleSheet::located(
|
||||||
"/homedemo/css/styles.css",
|
"/homedemo/css/styles.css",
|
||||||
)))
|
)))
|
||||||
|
|
@ -55,11 +55,11 @@ fn hello_world() -> Container {
|
||||||
.with_classes(ClassesOp::Add, "hello-col-text")
|
.with_classes(ClassesOp::Add, "hello-col-text")
|
||||||
.with_size(grid::ColumnSize::Is5of12)
|
.with_size(grid::ColumnSize::Is5of12)
|
||||||
.with_component(
|
.with_component(
|
||||||
Heading::h1(L10n::t("page_title", &LOCALE_DEMOHOME))
|
Heading::h1(L10n::t("page_title", &LOCALE_HOMEDEMO))
|
||||||
.with_display(HeadingDisplay::Medium),
|
.with_display(HeadingDisplay::Medium),
|
||||||
)
|
)
|
||||||
.with_component(
|
.with_component(
|
||||||
Paragraph::with(L10n::e("hello_intro", &LOCALE_DEMOHOME).with_arg(
|
Paragraph::with(L10n::e("hello_intro", &LOCALE_HOMEDEMO).with_arg(
|
||||||
"app",
|
"app",
|
||||||
format!(
|
format!(
|
||||||
"<span class=\"app-name\">{}</span>",
|
"<span class=\"app-name\">{}</span>",
|
||||||
|
|
@ -69,7 +69,7 @@ fn hello_world() -> Container {
|
||||||
.with_display(ParagraphDisplay::Small),
|
.with_display(ParagraphDisplay::Small),
|
||||||
)
|
)
|
||||||
.with_component(Paragraph::with(
|
.with_component(Paragraph::with(
|
||||||
L10n::e("hello_powered", &LOCALE_DEMOHOME).with_arg(
|
L10n::e("hello_powered", &LOCALE_HOMEDEMO).with_arg(
|
||||||
"pagetop",
|
"pagetop",
|
||||||
format!(
|
format!(
|
||||||
"<a href=\"{}\" target=\"_blank\">{}</a>",
|
"<a href=\"{}\" target=\"_blank\">{}</a>",
|
||||||
|
|
@ -80,14 +80,14 @@ fn hello_world() -> Container {
|
||||||
.with_component(
|
.with_component(
|
||||||
Anchor::button(
|
Anchor::button(
|
||||||
"https://github.com/manuelcillero/pagetop",
|
"https://github.com/manuelcillero/pagetop",
|
||||||
L10n::t("hello_code", &LOCALE_DEMOHOME),
|
L10n::t("hello_code", &LOCALE_HOMEDEMO),
|
||||||
)
|
)
|
||||||
.with_target(AnchorTarget::Blank)
|
.with_target(AnchorTarget::Blank)
|
||||||
.with_left_icon(Icon::with("git"))
|
.with_left_icon(Icon::with("git"))
|
||||||
.with_classes(ClassesOp::Add, "code-link"),
|
.with_classes(ClassesOp::Add, "code-link"),
|
||||||
)
|
)
|
||||||
.with_component(
|
.with_component(
|
||||||
Anchor::link("#welcome", L10n::t("hello_welcome", &LOCALE_DEMOHOME))
|
Anchor::link("#welcome", L10n::t("hello_welcome", &LOCALE_HOMEDEMO))
|
||||||
.with_left_icon(Icon::with("arrow-down-circle-fill"))
|
.with_left_icon(Icon::with("arrow-down-circle-fill"))
|
||||||
.with_classes(ClassesOp::Add, "welcome-link"),
|
.with_classes(ClassesOp::Add, "welcome-link"),
|
||||||
),
|
),
|
||||||
|
|
@ -104,9 +104,9 @@ fn welcome() -> Container {
|
||||||
Container::section()
|
Container::section()
|
||||||
.with_id("welcome")
|
.with_id("welcome")
|
||||||
.with_classes(ClassesOp::Add, "welcome-col-text")
|
.with_classes(ClassesOp::Add, "welcome-col-text")
|
||||||
.with_component(Heading::h2(L10n::t("welcome_page", &LOCALE_DEMOHOME)))
|
.with_component(Heading::h2(L10n::t("welcome_page", &LOCALE_HOMEDEMO)))
|
||||||
.with_component(
|
.with_component(
|
||||||
Heading::h3(L10n::e("welcome_subtitle", &LOCALE_DEMOHOME).with_arg(
|
Heading::h3(L10n::e("welcome_subtitle", &LOCALE_HOMEDEMO).with_arg(
|
||||||
"app",
|
"app",
|
||||||
format!(
|
format!(
|
||||||
"<span class=\"app-name\">{}</span>",
|
"<span class=\"app-name\">{}</span>",
|
||||||
|
|
@ -116,10 +116,10 @@ fn welcome() -> Container {
|
||||||
.with_display(HeadingDisplay::Subtitle),
|
.with_display(HeadingDisplay::Subtitle),
|
||||||
)
|
)
|
||||||
.with_component(
|
.with_component(
|
||||||
Paragraph::with(L10n::t("welcome_text1", &LOCALE_DEMOHOME))
|
Paragraph::with(L10n::t("welcome_text1", &LOCALE_HOMEDEMO))
|
||||||
.with_display(ParagraphDisplay::Small),
|
.with_display(ParagraphDisplay::Small),
|
||||||
)
|
)
|
||||||
.with_component(Paragraph::with(L10n::t("welcome_text2", &LOCALE_DEMOHOME)))
|
.with_component(Paragraph::with(L10n::t("welcome_text2", &LOCALE_HOMEDEMO)))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn about_pagetop() -> Container {
|
fn about_pagetop() -> Container {
|
||||||
|
|
@ -134,14 +134,14 @@ fn about_pagetop() -> Container {
|
||||||
.with_column(
|
.with_column(
|
||||||
grid::Column::new()
|
grid::Column::new()
|
||||||
.with_classes(ClassesOp::Add, "pagetop-col-text")
|
.with_classes(ClassesOp::Add, "pagetop-col-text")
|
||||||
.with_component(Heading::h2(L10n::t("pagetop_title", &LOCALE_DEMOHOME)))
|
.with_component(Heading::h2(L10n::t("pagetop_title", &LOCALE_HOMEDEMO)))
|
||||||
.with_component(
|
.with_component(
|
||||||
Paragraph::with(L10n::t("pagetop_text1", &LOCALE_DEMOHOME))
|
Paragraph::with(L10n::t("pagetop_text1", &LOCALE_HOMEDEMO))
|
||||||
.with_display(ParagraphDisplay::Small),
|
.with_display(ParagraphDisplay::Small),
|
||||||
)
|
)
|
||||||
.with_component(Paragraph::with(L10n::t("pagetop_text2", &LOCALE_DEMOHOME)))
|
.with_component(Paragraph::with(L10n::t("pagetop_text2", &LOCALE_HOMEDEMO)))
|
||||||
.with_component(Paragraph::with(
|
.with_component(Paragraph::with(
|
||||||
L10n::e("pagetop_text3", &LOCALE_DEMOHOME)
|
L10n::e("pagetop_text3", &LOCALE_HOMEDEMO)
|
||||||
.with_arg("href", "https://docs.rs/pagetop/latest/pagetop".to_string()),
|
.with_arg("href", "https://docs.rs/pagetop/latest/pagetop".to_string()),
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
|
|
@ -156,10 +156,10 @@ fn promo_pagetop() -> Container {
|
||||||
.with_classes(ClassesOp::Add, "promo-col-text")
|
.with_classes(ClassesOp::Add, "promo-col-text")
|
||||||
.with_component(Heading::h2(L10n::t(
|
.with_component(Heading::h2(L10n::t(
|
||||||
"pagetop_promo_title",
|
"pagetop_promo_title",
|
||||||
&LOCALE_DEMOHOME,
|
&LOCALE_HOMEDEMO,
|
||||||
)))
|
)))
|
||||||
.with_component(
|
.with_component(
|
||||||
Paragraph::with(L10n::e("pagetop_promo_text1", &LOCALE_DEMOHOME).with_arg(
|
Paragraph::with(L10n::e("pagetop_promo_text1", &LOCALE_HOMEDEMO).with_arg(
|
||||||
"pagetop",
|
"pagetop",
|
||||||
format!(
|
format!(
|
||||||
"<a href=\"{}\" target=\"_blank\">{}</a>",
|
"<a href=\"{}\" target=\"_blank\">{}</a>",
|
||||||
|
|
@ -192,15 +192,15 @@ fn reporting_issues() -> Container {
|
||||||
.with_size(grid::ColumnSize::Is6of12)
|
.with_size(grid::ColumnSize::Is6of12)
|
||||||
.with_component(Heading::h2(L10n::t(
|
.with_component(Heading::h2(L10n::t(
|
||||||
"report_problems_title",
|
"report_problems_title",
|
||||||
&LOCALE_DEMOHOME,
|
&LOCALE_HOMEDEMO,
|
||||||
)))
|
)))
|
||||||
.with_component(
|
.with_component(
|
||||||
Paragraph::with(L10n::t("report_problems_text1", &LOCALE_DEMOHOME))
|
Paragraph::with(L10n::t("report_problems_text1", &LOCALE_HOMEDEMO))
|
||||||
.with_display(ParagraphDisplay::Small),
|
.with_display(ParagraphDisplay::Small),
|
||||||
)
|
)
|
||||||
.with_component(Paragraph::with(L10n::t(
|
.with_component(Paragraph::with(L10n::t(
|
||||||
"report_problems_text2",
|
"report_problems_text2",
|
||||||
&LOCALE_DEMOHOME,
|
&LOCALE_HOMEDEMO,
|
||||||
))),
|
))),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,9 @@ authors = [
|
||||||
"Manuel Cillero <manuel@cillero.es>"
|
"Manuel Cillero <manuel@cillero.es>"
|
||||||
]
|
]
|
||||||
description = """\
|
description = """\
|
||||||
PageTop is an opinionated web development framework that uses the most stable and popular Rust \
|
PageTop is an opinionated web development framework that uses some of the most stable and \
|
||||||
packages to build modular, extensible and configurable Server-side rendered solutions.\
|
popular Rust packages to build modular, extensible and configurable Server-Side Rendering \
|
||||||
|
(SSR) solutions.
|
||||||
"""
|
"""
|
||||||
homepage = "https://pagetop.cillero.es"
|
homepage = "https://pagetop.cillero.es"
|
||||||
repository = "https://github.com/manuelcillero/pagetop"
|
repository = "https://github.com/manuelcillero/pagetop"
|
||||||
|
|
@ -34,7 +35,6 @@ sqlite = ["database", "sea-orm/sqlx-sqlite"]
|
||||||
[dependencies]
|
[dependencies]
|
||||||
async-trait = "0.1.68"
|
async-trait = "0.1.68"
|
||||||
concat-string = "1.0.1"
|
concat-string = "1.0.1"
|
||||||
doc-comment = "0.3.3"
|
|
||||||
figlet-rs = "0.1.5"
|
figlet-rs = "0.1.5"
|
||||||
itoa = "1.0.6"
|
itoa = "1.0.6"
|
||||||
futures = "0.3.28"
|
futures = "0.3.28"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
//! Lectura y uso de ajustes de configuración.
|
//! Read configuration files and use settings.
|
||||||
//!
|
//!
|
||||||
//! Carga la configuración de la aplicación en forma de pares `clave = valor` recogidos en archivos
|
//! Carga la configuración de la aplicación en forma de pares `clave = valor` recogidos en archivos
|
||||||
//! [TOML](https://toml.io).
|
//! [TOML](https://toml.io).
|
||||||
|
|
@ -51,15 +51,15 @@
|
||||||
//! serde = { version = "1.0", features = ["derive"] }
|
//! serde = { version = "1.0", features = ["derive"] }
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! Y luego declara con la macro [`use_config!`](crate::use_config) tus ajustes, usando tipos
|
//! Y luego inicializa con la macro [`default_settings!`](crate::default_settings) tus ajustes,
|
||||||
//! seguros y asignando los valores predefinidos para la estructura asociada:
|
//! usando tipos seguros y asignando los valores predefinidos para la estructura asociada:
|
||||||
//!
|
//!
|
||||||
//! ```
|
//! ```
|
||||||
//! use pagetop::prelude::*;
|
//! use pagetop::prelude::*;
|
||||||
//! use serde::Deserialize;
|
//! use serde::Deserialize;
|
||||||
//!
|
//!
|
||||||
//! #[derive(Debug, Deserialize)]
|
//! #[derive(Debug, Deserialize)]
|
||||||
//! pub struct MySettings {
|
//! pub struct Settings {
|
||||||
//! pub myapp: MyApp,
|
//! pub myapp: MyApp,
|
||||||
//! }
|
//! }
|
||||||
//!
|
//!
|
||||||
|
|
@ -71,7 +71,7 @@
|
||||||
//! pub height: u16,
|
//! pub height: u16,
|
||||||
//! }
|
//! }
|
||||||
//!
|
//!
|
||||||
//! use_config!(MY_SETTINGS as MySettings,
|
//! default_settings!(
|
||||||
//! // [myapp]
|
//! // [myapp]
|
||||||
//! "myapp.name" => "Value Name",
|
//! "myapp.name" => "Value Name",
|
||||||
//! "myapp.width" => 900,
|
//! "myapp.width" => 900,
|
||||||
|
|
@ -106,8 +106,8 @@
|
||||||
//! }
|
//! }
|
||||||
//!
|
//!
|
||||||
//! fn module_settings() {
|
//! fn module_settings() {
|
||||||
//! println!("{} - {:?}", &MY_SETTINGS.myapp.name, &MY_SETTINGS.myapp.description);
|
//! println!("{} - {:?}", &SETTINGS.myapp.name, &SETTINGS.myapp.description);
|
||||||
//! println!("{}", &MY_SETTINGS.myapp.width);
|
//! println!("{}", &SETTINGS.myapp.width);
|
||||||
//! }
|
//! }
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
|
|
@ -164,30 +164,28 @@ pub static CONFIG: LazyStatic<ConfigData> = LazyStatic::new(|| {
|
||||||
/// Detiene la aplicación con un panic! si no pueden asignarse los ajustes de configuración.
|
/// Detiene la aplicación con un panic! si no pueden asignarse los ajustes de configuración.
|
||||||
///
|
///
|
||||||
/// Ver [`Cómo añadir ajustes de configuración`](config/index.html#cómo-añadir-ajustes-de-configuración).
|
/// Ver [`Cómo añadir ajustes de configuración`](config/index.html#cómo-añadir-ajustes-de-configuración).
|
||||||
macro_rules! use_config {
|
macro_rules! default_settings {
|
||||||
( $SETTINGS:ident as $Settings:ty $(, $key:literal => $value:literal)*$(,)* ) => {
|
( $($key:literal => $value:literal),* $(,)? ) => {
|
||||||
$crate::doc_comment! {
|
#[doc = concat!(
|
||||||
concat!(
|
"Assigned or predefined values for configuration settings associated with the ",
|
||||||
"Valores asignados o predefinidos para los ajustes de configuración globales ",
|
"[`Settings`] structure."
|
||||||
"asociados a la estructura [`", stringify!($Settings), "`]."
|
)]
|
||||||
),
|
pub static SETTINGS: $crate::LazyStatic<Settings> = $crate::LazyStatic::new(|| {
|
||||||
pub static $SETTINGS: $crate::LazyStatic<$Settings> = $crate::LazyStatic::new(|| {
|
let mut settings = $crate::config::CONFIG.clone();
|
||||||
let mut settings = $crate::config::CONFIG.clone();
|
$(
|
||||||
$(
|
settings.set_default($key, $value).unwrap();
|
||||||
settings.set_default($key, $value).unwrap();
|
)*
|
||||||
)*
|
match settings.try_into() {
|
||||||
match settings.try_into() {
|
Ok(s) => s,
|
||||||
Ok(s) => s,
|
Err(e) => panic!("Error parsing settings: {}", e),
|
||||||
Err(e) => panic!("Error parsing settings: {}", e),
|
}
|
||||||
}
|
});
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
/// Ajustes globales para las secciones reservadas [`[app]`](App), [`[database]`](Database),
|
/// Configuration settings for the [`[app]`](App), [`[database]`](Database), [`[dev]`](Dev),
|
||||||
/// [`[dev]`](Dev), [`[log]`](Log) y [`[server]`](Server) (ver [`SETTINGS`]).
|
/// [`[log]`](Log), and [`[server]`](Server) sections (see [`SETTINGS`]).
|
||||||
pub struct Settings {
|
pub struct Settings {
|
||||||
pub app: App,
|
pub app: App,
|
||||||
pub database: Database,
|
pub database: Database,
|
||||||
|
|
@ -197,9 +195,9 @@ pub struct Settings {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
/// Sección `[app]` de los ajustes de configuración globales.
|
/// Section `[app]` of the configuration settings.
|
||||||
///
|
///
|
||||||
/// Ver [`Settings`].
|
/// See [`Settings`].
|
||||||
pub struct App {
|
pub struct App {
|
||||||
/// El nombre de la aplicación.
|
/// El nombre de la aplicación.
|
||||||
/// Por defecto: *"PageTop App"*.
|
/// Por defecto: *"PageTop App"*.
|
||||||
|
|
@ -225,9 +223,9 @@ pub struct App {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
/// Sección `[database]` de los ajustes de configuración globales.
|
/// Section `[database]` of the configuration settings.
|
||||||
///
|
///
|
||||||
/// Ver [`Settings`].
|
/// See [`Settings`].
|
||||||
pub struct Database {
|
pub struct Database {
|
||||||
/// Tipo de base de datos: *"mysql"*, *"postgres"* ó *"sqlite"*.
|
/// Tipo de base de datos: *"mysql"*, *"postgres"* ó *"sqlite"*.
|
||||||
/// Por defecto: *""*.
|
/// Por defecto: *""*.
|
||||||
|
|
@ -253,9 +251,9 @@ pub struct Database {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
/// Sección `[dev]` de los ajustes de configuración globales.
|
/// Section `[dev]` of the configuration settings.
|
||||||
///
|
///
|
||||||
/// Ver [`Settings`].
|
/// See [`Settings`].
|
||||||
pub struct Dev {
|
pub struct Dev {
|
||||||
/// Los archivos estáticos requeridos por la aplicación se integran de manera predeterminada en
|
/// Los archivos estáticos requeridos por la aplicación se integran de manera predeterminada en
|
||||||
/// el binario ejecutable. Sin embargo, durante el desarrollo puede resultar útil servir estos
|
/// el binario ejecutable. Sin embargo, durante el desarrollo puede resultar útil servir estos
|
||||||
|
|
@ -266,9 +264,9 @@ pub struct Dev {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
/// Sección `[log]` de los ajustes de configuración globales.
|
/// Section `[log]` of the configuration settings.
|
||||||
///
|
///
|
||||||
/// Ver [`Settings`].
|
/// See [`Settings`].
|
||||||
pub struct Log {
|
pub struct Log {
|
||||||
/// Filtro, o combinación de filtros separados por coma, para la traza de ejecución: *"Error"*,
|
/// Filtro, o combinación de filtros separados por coma, para la traza de ejecución: *"Error"*,
|
||||||
/// *"Warn"*, *"Info"*, *"Debug"* o *"Trace"*.
|
/// *"Warn"*, *"Info"*, *"Debug"* o *"Trace"*.
|
||||||
|
|
@ -291,9 +289,9 @@ pub struct Log {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
/// Sección `[server]` de los ajustes de configuración globales.
|
/// Section `[server]` of the configuration settings.
|
||||||
///
|
///
|
||||||
/// Ver [`Settings`].
|
/// See [`Settings`].
|
||||||
pub struct Server {
|
pub struct Server {
|
||||||
/// Dirección del servidor web.
|
/// Dirección del servidor web.
|
||||||
/// Por defecto: *"localhost"*.
|
/// Por defecto: *"localhost"*.
|
||||||
|
|
@ -306,7 +304,7 @@ pub struct Server {
|
||||||
pub session_lifetime: i64,
|
pub session_lifetime: i64,
|
||||||
}
|
}
|
||||||
|
|
||||||
use_config!(SETTINGS as Settings,
|
default_settings!(
|
||||||
// [app]
|
// [app]
|
||||||
"app.name" => "PageTop App",
|
"app.name" => "PageTop App",
|
||||||
"app.description" => "Modular web solutions made simple with PageTop.",
|
"app.description" => "Modular web solutions made simple with PageTop.",
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@
|
||||||
//! }
|
//! }
|
||||||
//! ```
|
//! ```
|
||||||
//! Este programa crea un módulo llamado `HelloWorld` con un servicio que devuelve una página web
|
//! Este programa crea un módulo llamado `HelloWorld` con un servicio que devuelve una página web
|
||||||
//! saludando al mundo cada vez que se accede desde el navegador a `http://localhost:8088` (según
|
//! saludando al mundo cada vez que se accede desde el navegador a `http://localhost:8088` (para
|
||||||
//! los [ajustes de configuración](`config::Server`) predeterminados).
|
//! los [ajustes de configuración](`config::Server`) predeterminados).
|
||||||
//!
|
//!
|
||||||
//! # 🧱 Extendiendo PageTop
|
//! # 🧱 Extendiendo PageTop
|
||||||
|
|
@ -102,7 +102,6 @@
|
||||||
// *************************************************************************************************
|
// *************************************************************************************************
|
||||||
|
|
||||||
pub use concat_string::concat_string;
|
pub use concat_string::concat_string;
|
||||||
pub use doc_comment::doc_comment;
|
|
||||||
pub use once_cell::sync::Lazy as LazyStatic;
|
pub use once_cell::sync::Lazy as LazyStatic;
|
||||||
pub use paste::paste;
|
pub use paste::paste;
|
||||||
pub use static_files::Resource as StaticResource;
|
pub use static_files::Resource as StaticResource;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue