@@ -278,10 +278,14 @@ fn process_css(document: &NodeRef, css: &str) -> Result<()> {
278
278
let style = if let Some ( existing_style) = attributes. get ( "style" ) {
279
279
merge_styles ( existing_style, & rule. declarations ) ?
280
280
} else {
281
- rule. declarations
282
- . iter ( )
283
- . map ( |& ( ref key, value) | format ! ( "{}:{};" , key, value) )
284
- . collect ( )
281
+ let mut final_styles = String :: with_capacity ( 32 ) ;
282
+ for ( name, value) in rule. declarations . iter ( ) {
283
+ final_styles. push_str ( name) ;
284
+ final_styles. push ( ':' ) ;
285
+ final_styles. push_str ( value) ;
286
+ final_styles. push ( ';' ) ;
287
+ }
288
+ final_styles
285
289
} ;
286
290
attributes. insert ( "style" , style) ;
287
291
}
@@ -332,8 +336,12 @@ fn merge_styles(existing_style: &str, new_styles: &[parser::Declaration]) -> Res
332
336
styles. insert ( property. to_string ( ) , value) ;
333
337
}
334
338
// Create a new declarations list
335
- Ok ( styles
336
- . into_iter ( )
337
- . map ( |( key, value) | format ! ( "{}:{};" , key, value) )
338
- . collect :: < String > ( ) )
339
+ let mut final_styles = String :: with_capacity ( 32 ) ;
340
+ for ( name, value) in & styles {
341
+ final_styles. push_str ( name. as_str ( ) ) ;
342
+ final_styles. push ( ':' ) ;
343
+ final_styles. push_str ( value) ;
344
+ final_styles. push ( ';' ) ;
345
+ }
346
+ Ok ( final_styles)
339
347
}
0 commit comments