11use std:: {
22 borrow:: Cow ,
33 io:: { BufWriter , Write , stdout} ,
4- os:: unix:: ffi:: OsStringExt ,
54} ;
65
76use puppyutils:: { Result , cli} ;
@@ -10,40 +9,40 @@ pub fn main() -> Result {
109 // No point in locking stdout since we only use it once in this program
1110 let mut stdout = stdout ( ) ;
1211
13- let mut buffer: Option < Vec < u8 > > = None ;
12+ let mut buffer = None ;
1413
1514 let arg_parser = cli ! {
1615 "yes" , stdout, #error
1716 Value ( value) => {
18- extend_buffer( & mut buffer, value. as_bytes ( ) . to_vec ( ) ) ;
17+ extend_buffer( & mut buffer, value) ;
1918 }
2019 } ;
2120
2221 arg_parser
2322 . into_inner ( )
24- . for_each ( |arg| extend_buffer ( & mut buffer, arg. into_vec ( ) ) ) ;
23+ . for_each ( |arg| extend_buffer ( & mut buffer, arg. into ( ) ) ) ;
2524
26- let output: Cow < ' _ , [ u8 ] > = if let Some ( mut buffer) = buffer {
27- buffer. push ( b '\n') ;
25+ let output = if let Some ( mut buffer) = buffer {
26+ buffer. push ( '\n' ) ;
2827 Cow :: Owned ( buffer)
2928 } else {
30- Cow :: Borrowed ( b "y\n ")
29+ Cow :: Borrowed ( "y\n " )
3130 } ;
3231
3332 // Write everything to stdout, BufWriter will handle the buffering
3433 let mut stdout = BufWriter :: new ( stdout) ;
3534
3635 loop {
37- stdout. write_all ( & output) ?;
36+ stdout. write_all ( output. as_bytes ( ) ) ?;
3837 }
3938}
4039
4140#[ inline]
42- fn extend_buffer ( buffer : & mut Option < Vec < u8 > > , mut arg : Vec < u8 > ) {
41+ fn extend_buffer ( buffer : & mut Option < String > , arg : Cow < ' _ , str > ) {
4342 if let Some ( buffer) = buffer {
44- buffer. push ( b ' ') ; // Manually put the space
45- buffer. append ( & mut arg) ;
43+ buffer. push ( ' ' ) ; // Manually put the space
44+ buffer. push_str ( arg. as_ref ( ) ) ;
4645 } else {
47- * buffer = Some ( arg)
46+ * buffer = Some ( arg. into_owned ( ) )
4847 }
4948}
0 commit comments