File tree 1 file changed +6
-4
lines changed
1 file changed +6
-4
lines changed Original file line number Diff line number Diff line change @@ -249,8 +249,9 @@ pub struct DirBuilder {
249
249
pub fn read < P : AsRef < Path > > ( path : P ) -> io:: Result < Vec < u8 > > {
250
250
fn inner ( path : & Path ) -> io:: Result < Vec < u8 > > {
251
251
let mut file = File :: open ( path) ?;
252
- let mut bytes = Vec :: new ( ) ;
253
- file. read_to_end ( & mut bytes) ?;
252
+ let size = file. metadata ( ) . map ( |m| m. len ( ) ) . unwrap_or ( 0 ) ;
253
+ let mut bytes = Vec :: with_capacity ( size as usize ) ;
254
+ io:: default_read_to_end ( & mut file, & mut bytes) ?;
254
255
Ok ( bytes)
255
256
}
256
257
inner ( path. as_ref ( ) )
@@ -288,8 +289,9 @@ pub fn read<P: AsRef<Path>>(path: P) -> io::Result<Vec<u8>> {
288
289
pub fn read_to_string < P : AsRef < Path > > ( path : P ) -> io:: Result < String > {
289
290
fn inner ( path : & Path ) -> io:: Result < String > {
290
291
let mut file = File :: open ( path) ?;
291
- let mut string = String :: new ( ) ;
292
- file. read_to_string ( & mut string) ?;
292
+ let size = file. metadata ( ) . map ( |m| m. len ( ) ) . unwrap_or ( 0 ) ;
293
+ let mut string = String :: with_capacity ( size as usize ) ;
294
+ io:: default_read_to_string ( & mut file, & mut string) ?;
293
295
Ok ( string)
294
296
}
295
297
inner ( path. as_ref ( ) )
You can’t perform that action at this time.
0 commit comments