1+ #[ cfg( target_pointer_width = "64" ) ]
2+ use crate :: args:: WriteMethod ;
13use crate :: {
24 args:: DownloadArgs ,
35 fmt,
@@ -232,21 +234,25 @@ pub async fn download(mut args: DownloadArgs) -> Result<()> {
232234 {
233235 return Err ( err. into ( ) ) ;
234236 }
237+ let get_std_pusher = async {
238+ let file = OpenOptions :: new ( )
239+ . create ( true )
240+ . write ( true )
241+ . read ( true )
242+ . truncate ( false )
243+ . open ( & save_path)
244+ . await ?;
245+ let file_pusher = FilePusher :: new ( file, info. size , args. write_buffer_size ) . await ?;
246+ Ok :: < _ , color_eyre:: Report > ( BoxPusher :: new ( file_pusher) )
247+ } ;
235248 let result = if info. fast_download {
236249 #[ cfg( target_pointer_width = "64" ) ]
237- let pusher = MmapFilePusher :: new ( & save_path, info. size ) . await ?;
238- #[ cfg( not( target_pointer_width = "64" ) ) ]
239- let pusher = {
240- let file = OpenOptions :: new ( )
241- . create ( true )
242- . write ( true )
243- . read ( true )
244- . truncate ( false )
245- . open ( & save_path)
246- . await ?;
247- FilePusher :: new ( file, info. size , args. write_buffer_size ) . await ?
250+ let pusher = match args. write_method {
251+ WriteMethod :: Mmap => BoxPusher :: new ( MmapFilePusher :: new ( & save_path, info. size ) . await ?) ,
252+ WriteMethod :: Std => get_std_pusher. await ?,
248253 } ;
249- let pusher = BoxPusher :: new ( pusher) ;
254+ #[ cfg( not( target_pointer_width = "64" ) ) ]
255+ let pusher = get_std_pusher. await ?;
250256 download_multi (
251257 puller,
252258 pusher,
@@ -261,14 +267,7 @@ pub async fn download(mut args: DownloadArgs) -> Result<()> {
261267 } ,
262268 )
263269 } else {
264- let file = OpenOptions :: new ( )
265- . write ( true )
266- . create ( true )
267- . truncate ( false )
268- . open ( & save_path)
269- . await ?;
270- let pusher = FilePusher :: new ( file, info. size , args. write_buffer_size ) . await ?;
271- let pusher = BoxPusher :: new ( pusher) ;
270+ let pusher = get_std_pusher. await ?;
272271 download_single (
273272 puller,
274273 pusher,
0 commit comments