@@ -325,6 +325,59 @@ trait ItemTemplate<'a, 'cx: 'a>: askama::Template + fmt::Display {
325325 fn item_and_mut_cx ( & self ) -> ( & ' a clean:: Item , RefMut < ' _ , & ' a mut Context < ' cx > > ) ;
326326}
327327
328+ fn item_template_document < ' a : ' b , ' b , ' cx : ' a > (
329+ templ : & ' b impl ItemTemplate < ' a , ' cx > ,
330+ ) -> impl fmt:: Display + Captures < ' a > + ' b + Captures < ' cx > {
331+ display_fn ( move |f| {
332+ let ( item, mut cx) = templ. item_and_mut_cx ( ) ;
333+ let v = document ( * cx, item, None , HeadingOffset :: H2 ) ;
334+ write ! ( f, "{v}" )
335+ } )
336+ }
337+
338+ fn item_template_document_type_layout < ' a : ' b , ' b , ' cx : ' a > (
339+ templ : & ' b impl ItemTemplate < ' a , ' cx > ,
340+ ) -> impl fmt:: Display + Captures < ' a > + ' b + Captures < ' cx > {
341+ display_fn ( move |f| {
342+ let ( item, cx) = templ. item_and_mut_cx ( ) ;
343+ let def_id = item. item_id . expect_def_id ( ) ;
344+ let v = document_type_layout ( * cx, def_id) ;
345+ write ! ( f, "{v}" )
346+ } )
347+ }
348+
349+ fn item_template_render_attributes_in_pre < ' a : ' b , ' b , ' cx : ' a > (
350+ templ : & ' b impl ItemTemplate < ' a , ' cx > ,
351+ ) -> impl fmt:: Display + Captures < ' a > + ' b + Captures < ' cx > {
352+ display_fn ( move |f| {
353+ let ( item, cx) = templ. item_and_mut_cx ( ) ;
354+ let tcx = cx. tcx ( ) ;
355+ let v = render_attributes_in_pre ( item, "" , tcx) ;
356+ write ! ( f, "{v}" )
357+ } )
358+ }
359+
360+ fn item_template_render_attributes_in_code < ' a : ' b , ' b , ' cx : ' a > (
361+ templ : & ' b impl ItemTemplate < ' a , ' cx > ,
362+ ) -> impl fmt:: Display + Captures < ' a > + ' b + Captures < ' cx > {
363+ display_fn ( move |f| {
364+ let ( it, cx) = templ. item_and_mut_cx ( ) ;
365+ let v = render_attributes_in_code ( it, cx. tcx ( ) ) ;
366+ write ! ( f, "{v}" )
367+ } )
368+ }
369+
370+ fn item_template_render_assoc_items < ' a : ' b , ' b , ' cx : ' a > (
371+ templ : & ' b impl ItemTemplate < ' a , ' cx > ,
372+ ) -> impl fmt:: Display + Captures < ' a > + ' b + Captures < ' cx > {
373+ display_fn ( move |f| {
374+ let ( item, mut cx) = templ. item_and_mut_cx ( ) ;
375+ let def_id = item. item_id . expect_def_id ( ) ;
376+ let v = render_assoc_items ( * cx, item, def_id, AssocItemRender :: All , None ) ;
377+ write ! ( f, "{v}" )
378+ } )
379+ }
380+
328381fn item_module ( w : & mut Buffer , cx : & mut Context < ' _ > , item : & clean:: Item , items : & [ clean:: Item ] ) {
329382 write ! ( w, "{}" , document( cx, item, None , HeadingOffset :: H2 ) ) ;
330383
@@ -1605,6 +1658,12 @@ fn item_struct(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, s: &clean
16051658 ty : String ,
16061659 }
16071660
1661+ impl < ' a , ' cx : ' a > ItemTemplate < ' a , ' cx > for ItemStruct < ' a , ' cx > {
1662+ fn item_and_mut_cx ( & self ) -> ( & ' a clean:: Item , RefMut < ' _ , & ' a mut Context < ' cx > > ) {
1663+ ( self . it , self . cx . borrow_mut ( ) )
1664+ }
1665+ }
1666+
16081667 impl < ' a , ' cx : ' a > ItemStruct < ' a , ' cx > {
16091668 fn new (
16101669 cx : std:: cell:: RefCell < & ' a mut Context < ' cx > > ,
@@ -1616,15 +1675,6 @@ fn item_struct(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, s: &clean
16161675 Self { cx, it, s, should_render_fields }
16171676 }
16181677
1619- fn render_attributes_in_code < ' b > (
1620- & ' b self ,
1621- ) -> impl fmt:: Display + Captures < ' a > + ' b + Captures < ' cx > {
1622- display_fn ( move |f| {
1623- let tcx = self . cx . borrow ( ) . tcx ( ) ;
1624- write ! ( f, "{}" , render_attributes_in_code( self . it, tcx) )
1625- } )
1626- }
1627-
16281678 fn render_struct < ' b > ( & ' b self ) -> impl fmt:: Display + Captures < ' a > + ' b + Captures < ' cx > {
16291679 display_fn ( move |f| {
16301680 let cx = self . cx . borrow ( ) ;
@@ -1641,14 +1691,6 @@ fn item_struct(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, s: &clean
16411691 } )
16421692 }
16431693
1644- fn document < ' b > ( & ' b self ) -> impl fmt:: Display + Captures < ' a > + ' b + Captures < ' cx > {
1645- display_fn ( move |f| {
1646- let mut cx = self . cx . borrow_mut ( ) ;
1647- let v = document ( * cx, self . it , None , HeadingOffset :: H2 ) ;
1648- write ! ( f, "{v}" )
1649- } )
1650- }
1651-
16521694 fn struct_field_items_iter < ' b > (
16531695 & ' b self ,
16541696 ) -> impl Iterator < Item = Field < ' a > > + Captures < ' a > + ' b + Captures < ' cx > {
@@ -1672,28 +1714,6 @@ fn item_struct(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, s: &clean
16721714 write ! ( f, "{v}" )
16731715 } )
16741716 }
1675-
1676- fn render_assoc_items < ' b > (
1677- & ' b self ,
1678- ) -> impl fmt:: Display + Captures < ' a > + ' b + Captures < ' cx > {
1679- display_fn ( move |f| {
1680- let mut cx = self . cx . borrow_mut ( ) ;
1681- let def_id = self . it . item_id . expect_def_id ( ) ;
1682- let v = render_assoc_items ( * cx, self . it , def_id, AssocItemRender :: All ) ;
1683- write ! ( f, "{v}" )
1684- } )
1685- }
1686-
1687- fn document_type_layout < ' b > (
1688- & ' b self ,
1689- ) -> impl fmt:: Display + Captures < ' a > + ' b + Captures < ' cx > {
1690- display_fn ( move |f| {
1691- let cx = self . cx . borrow ( ) ;
1692- let def_id = self . it . item_id . expect_def_id ( ) ;
1693- let v = document_type_layout ( * cx, def_id) ;
1694- write ! ( f, "{v}" )
1695- } )
1696- }
16971717 }
16981718
16991719 ItemStruct :: new ( std:: cell:: RefCell :: new ( cx) , it, s) . render_into ( w) . unwrap ( ) ;
0 commit comments