askama_web/implementation/
salvo_core_0_76.rs

1pub use askama::Template;
2use http_1::StatusCode;
3use salvo_core_0_76::writing::Text;
4pub use salvo_core_0_76::{Response, Scribe};
5
6#[cfg(feature = "derive")]
7pub use crate::__askama_web_impl_salvo_core_0_76 as derive;
8
9#[cfg(feature = "derive")]
10#[macro_export]
11#[doc(hidden)]
12macro_rules! __askama_web_impl_salvo_core_0_76 {
13    (@ $ast:tt) => {
14        $crate::__askama_web_impl::askama_web_derive::impl_framework! {
15            $crate::__askama_web_impl::salvo_core_0_76::derive!($ast);
16        }
17    };
18    (
19        ident: [$ident:ident],
20        impl_generics: [$($impl_generics:tt)*],
21        ty_generics: [$($ty_generics:tt)*],
22        where_clause: [$($where_clause:tt)*],
23    ) => {
24        const _: () = {
25            use $crate::__askama_web_impl::salvo_core_0_76 as __askama_web;
26
27            impl $($impl_generics)* __askama_web::Scribe
28            for $ident $($ty_generics)* $($where_clause)* {
29                #[inline]
30                #[track_caller]
31                fn render(self, res: &mut __askama_web::Response) {
32                    let result = <Self as __askama_web::Template>::render(&self);
33                    __askama_web::render(result, res)
34                }
35            }
36        };
37    };
38}
39
40impl<T: Template> Scribe for crate::WebTemplate<T> {
41    #[inline]
42    #[track_caller]
43    fn render(self, res: &mut Response) {
44        render(T::render(&self.0), res)
45    }
46}
47
48#[track_caller]
49pub fn render(result: askama::Result<String>, res: &mut Response) {
50    match result {
51        Ok(body) => Text::Html(body).render(res),
52        Err(err) => {
53            crate::render_error(&err);
54            StatusCode::INTERNAL_SERVER_ERROR.render(res)
55        }
56    }
57}