Closed
Description
In my template library horrorshow, I have the following definition to allow RenderOnce::render_once
to be called through a boxed RenderOnce
.
pub trait RenderBox {
/// Do not call. Called by RenderOnce impl on Box<RenderBox>
#[doc(hidden)]
fn render_box(self: Box<Self>, tmpl: &mut TemplateBuffer);
/// Do not call. Called by RenderOnce impl on Box<RenderBox>
#[doc(hidden)]
fn size_hint_box(&self) -> usize;
}
impl<T> RenderBox for T where T: RenderOnce {
fn render_box(self: Box<T>, tmpl: &mut TemplateBuffer) {
(*self).render_once(tmpl);
}
fn size_hint_box(&self) -> usize {
RenderOnce::size_hint(self)
}
}
// Box<RenderBox>
impl<'b> RenderOnce for Box<RenderBox + 'b> {
#[inline]
fn render_once(self, tmpl: &mut TemplateBuffer) {
RenderBox::render_box(self, tmpl);
}
#[inline]
fn size_hint(&self) -> usize {
RenderBox::size_hint_box(self)
}
}
This is the same pattern as stdlib's FnBox
/FnOnce
. Unfortunately, clippy claims that this box is unnecessary:
src/render.rs:68:19: 68:23 warning: local variable doesn't need to be boxed here, #[warn(boxed_local)] on by default
src/render.rs:68 fn render_box(self: Box<T>, tmpl: &mut TemplateBuffer) {
Metadata
Metadata
Assignees
Labels
No labels