@@ -24,17 +24,20 @@ use crate::{
2424
2525const ANONYMIZED_LINE_NUM : & str = "LL" ;
2626
27- pub ( crate ) fn render ( renderer : & Renderer , groups : Report < ' _ > ) -> String {
27+ pub ( crate ) fn render_to (
28+ mut to : impl fmt:: Write ,
29+ renderer : & Renderer ,
30+ groups : Report < ' _ > ,
31+ ) -> fmt:: Result {
2832 if renderer. short_message {
29- render_short_message ( renderer, groups) . unwrap ( )
33+ render_short_message ( to , renderer, groups)
3034 } else {
3135 let ( max_line_num, og_primary_path, groups) = pre_process ( groups) ;
3236 let max_line_num_len = if renderer. anonymized_line_numbers {
3337 ANONYMIZED_LINE_NUM . len ( )
3438 } else {
3539 num_decimal_digits ( max_line_num)
3640 } ;
37- let mut out_string = String :: new ( ) ;
3841 let group_len = groups. len ( ) ;
3942 for (
4043 g,
@@ -220,19 +223,21 @@ pub(crate) fn render(renderer: &Renderer, groups: Report<'_>) -> String {
220223 }
221224 }
222225 buffer
223- . render ( & level, & renderer. stylesheet , & mut out_string )
226+ . render_to ( & mut to , & level, & renderer. stylesheet )
224227 . unwrap ( ) ;
225228 if g != group_len - 1 {
226- use std:: fmt:: Write ;
227-
228- writeln ! ( out_string) . unwrap ( ) ;
229+ writeln ! ( to) . unwrap ( ) ;
229230 }
230231 }
231- out_string
232+ Ok ( ( ) )
232233 }
233234}
234235
235- fn render_short_message ( renderer : & Renderer , groups : & [ Group < ' _ > ] ) -> Result < String , fmt:: Error > {
236+ fn render_short_message (
237+ to : impl fmt:: Write ,
238+ renderer : & Renderer ,
239+ groups : & [ Group < ' _ > ] ,
240+ ) -> fmt:: Result {
236241 let mut buffer = StyledBuffer :: new ( ) ;
237242 let mut labels = None ;
238243 let group = groups. first ( ) . expect ( "Expected at least one group" ) ;
@@ -306,10 +311,9 @@ fn render_short_message(renderer: &Renderer, groups: &[Group<'_>]) -> Result<Str
306311 buffer. append ( 0 , & format ! ( ": {labels}" ) , ElementStyle :: NoStyle ) ;
307312 }
308313
309- let mut out_string = String :: new ( ) ;
310- buffer. render ( & title. level , & renderer. stylesheet , & mut out_string) ?;
314+ buffer. render_to ( to, & title. level , & renderer. stylesheet ) ?;
311315
312- Ok ( out_string )
316+ Ok ( ( ) )
313317}
314318
315319#[ allow( clippy:: too_many_arguments) ]
0 commit comments