@@ -4,29 +4,29 @@ use serde::Serialize;
44use serde_json:: to_vec as write_json;
55use std:: io:: Write ;
66use std:: path:: Path ;
7- use std:: sync:: { Arc , Mutex } ;
7+ use std:: sync:: Arc ;
88use { Error , Target } ;
99
1010/// Create a new JSON output that writes to a file
1111pub fn file < T : AsRef < Path > > ( name : T ) -> Result < Target , Error > {
1212 let path = name. as_ref ( ) . to_path_buf ( ) ;
13- Ok ( Target :: Json ( Arc :: new ( Mutex :: new ( Formatter :: init_with (
14- move || {
15- use std:: fs:: { File , OpenOptions } ;
16- use std:: io:: BufWriter ;
17-
18- let target = if path. exists ( ) {
19- let mut f = OpenOptions :: new ( ) . write ( true ) . append ( true ) . open ( & path) ?;
20- f. write_all ( b"\n " ) ?;
21-
22- f
23- } else {
24- File :: create ( & path) ?
25- } ;
13+ let formatter = Formatter :: init_with ( move || {
14+ use std:: fs:: { File , OpenOptions } ;
15+ use std:: io:: BufWriter ;
16+
17+ let target = if path. exists ( ) {
18+ let mut f = OpenOptions :: new ( ) . write ( true ) . append ( true ) . open ( & path) ?;
19+ f. write_all ( b"\n " ) ?;
20+
21+ f
22+ } else {
23+ File :: create ( & path) ?
24+ } ;
25+
26+ Ok ( BufWriter :: new ( target) )
27+ } ) ?;
2628
27- Ok ( BufWriter :: new ( target) )
28- } ,
29- ) ?) ) ) )
29+ Ok ( Target :: json ( formatter) )
3030}
3131
3232pub use self :: test_helper:: test;
@@ -58,7 +58,7 @@ impl Formatter {
5858
5959 match self . inner . receiver . recv ( ) {
6060 Some ( Response :: Flushed ) => Ok ( ( ) ) ,
61- msg => Err ( Error :: WorkerError ( format ! ( "unexpected message {:?}" , msg) ) ) ,
61+ msg => Err ( Error :: worker_error ( format ! ( "unexpected message {:?}" , msg) ) ) ,
6262 }
6363 }
6464
@@ -137,7 +137,7 @@ impl InternalFormatter {
137137 sender : message_sender,
138138 receiver : response_receiver,
139139 } ) ,
140- msg => Err ( Error :: WorkerError ( format ! ( "unexpected message {:?}" , msg) ) ) ,
140+ msg => Err ( Error :: worker_error ( format ! ( "unexpected message {:?}" , msg) ) ) ,
141141 }
142142 }
143143}
@@ -207,7 +207,6 @@ macro_rules! render_json {
207207
208208mod test_helper {
209209 use super :: Formatter ;
210- use std:: sync:: { Arc , Mutex } ;
211210 use termcolor:: Buffer ;
212211 use test_buffer:: TestBuffer ;
213212 use Target ;
@@ -264,7 +263,7 @@ mod test_helper {
264263 }
265264
266265 pub fn target ( & self ) -> Target {
267- Target :: Json ( Arc :: new ( Mutex :: new ( self . formatter ( ) ) ) )
266+ Target :: json ( self . formatter ( ) )
268267 }
269268
270269 pub fn to_string ( & self ) -> String {
0 commit comments