break: forbit implementing TemplateOnce trait by hand

This commit is contained in:
Kogia-sima 2020-12-19 17:23:47 +09:00
parent c6a3985dfd
commit 70033d604d
2 changed files with 15 additions and 5 deletions

View File

@ -264,6 +264,8 @@ fn derive_template_impl(tokens: TokenStream) -> Result<TokenStream, syn::Error>
Ok(())
}
}
impl #impl_generics sailfish::private::Sealed for #name #ty_generics #where_clause {}
};
Ok(tokens)

View File

@ -44,7 +44,7 @@ pub use runtime::{RenderError, RenderResult};
pub use sailfish_macros::TemplateOnce;
/// Template that can be rendered with consuming itself.
pub trait TemplateOnce: Sized {
pub trait TemplateOnce: Sized + private::Sealed {
/// Render the template and return the rendering result as `RenderResult`
///
/// This method never returns `Err`, unless you explicitly return RenderError
@ -62,7 +62,7 @@ pub trait TemplateOnce: Sized {
/// inside templates
///
/// ```
/// use sailfish::{RenderError, TemplateOnce};
/// use sailfish::TemplateOnce;
/// use sailfish::runtime::Buffer;
///
/// # pub struct HelloTemplate {
@ -70,15 +70,18 @@ pub trait TemplateOnce: Sized {
/// # }
/// #
/// # impl TemplateOnce for HelloTemplate {
/// # fn render_once(self) -> Result<String, RenderError> {
/// # fn render_once(self) -> Result<String, sailfish::RenderError> {
/// # Ok(String::new())
/// # }
/// #
/// # fn render_once_to(self, buf: &mut Buffer) -> Result<(), RenderError> {
/// # fn render_once_to(self, buf: &mut Buffer)
/// # -> Result<(), sailfish::RenderError> {
/// # Ok(())
/// # }
/// # }
/// #
/// # impl sailfish::private::Sealed for HelloTemplate {}
/// #
/// let tpl = HelloTemplate {
/// messages: vec!["foo".to_string()]
/// };
@ -91,6 +94,11 @@ pub trait TemplateOnce: Sized {
}
/// Work in Progress
pub trait Template {
pub trait Template: private::Sealed {
fn render(&self) -> runtime::RenderResult;
}
#[doc(hidden)]
pub mod private {
pub trait Sealed {}
}