@@ -60,73 +60,65 @@ pub fn download_to_path_with_backend(
60
60
61
61
let downloaded_so_far = if let Ok ( mut partial) = possible_partial {
62
62
if let Some ( cb) = callback {
63
- try! ( cb ( Event :: ResumingPartialDownload ) ) ;
63
+ cb ( Event :: ResumingPartialDownload ) ? ;
64
64
65
65
let mut buf = vec ! [ 0 ; 32768 ] ;
66
66
let mut downloaded_so_far = 0 ;
67
67
loop {
68
- let n = try! ( partial. read ( & mut buf) ) ;
68
+ let n = partial. read ( & mut buf) ? ;
69
69
downloaded_so_far += n as u64 ;
70
70
if n == 0 {
71
71
break ;
72
72
}
73
- try! ( cb ( Event :: DownloadDataReceived ( & buf[ ..n] ) ) ) ;
73
+ cb ( Event :: DownloadDataReceived ( & buf[ ..n] ) ) ? ;
74
74
}
75
75
76
76
downloaded_so_far
77
77
} else {
78
- let file_info = try! ( partial. metadata ( ) ) ;
78
+ let file_info = partial. metadata ( ) ? ;
79
79
file_info. len ( )
80
80
}
81
81
} else {
82
82
0
83
83
} ;
84
84
85
- let mut possible_partial = try!(
86
- OpenOptions :: new ( )
87
- . write ( true )
88
- . create ( true )
89
- . open ( & path)
90
- . chain_err ( || "error opening file for download" )
91
- ) ;
85
+ let mut possible_partial = OpenOptions :: new ( )
86
+ . write ( true )
87
+ . create ( true )
88
+ . open ( & path)
89
+ . chain_err ( || "error opening file for download" ) ?;
92
90
93
- try! ( possible_partial. seek ( SeekFrom :: End ( 0 ) ) ) ;
91
+ possible_partial. seek ( SeekFrom :: End ( 0 ) ) ? ;
94
92
95
93
( possible_partial, downloaded_so_far)
96
94
} else {
97
95
(
98
- try!(
99
- OpenOptions :: new ( )
100
- . write ( true )
101
- . create ( true )
102
- . open ( & path)
103
- . chain_err ( || "error creating file for download" )
104
- ) ,
96
+ OpenOptions :: new ( )
97
+ . write ( true )
98
+ . create ( true )
99
+ . open ( & path)
100
+ . chain_err ( || "error creating file for download" ) ?,
105
101
0 ,
106
102
)
107
103
} ;
108
104
109
105
let file = RefCell :: new ( file) ;
110
106
111
- try! ( download_with_backend ( backend, url, resume_from, & |event| {
107
+ download_with_backend ( backend, url, resume_from, & |event| {
112
108
if let Event :: DownloadDataReceived ( data) = event {
113
- try!(
114
- file. borrow_mut ( )
115
- . write_all ( data)
116
- . chain_err ( || "unable to write download to disk" )
117
- ) ;
109
+ file. borrow_mut ( )
110
+ . write_all ( data)
111
+ . chain_err ( || "unable to write download to disk" ) ?;
118
112
}
119
113
match callback {
120
114
Some ( cb) => cb ( event) ,
121
115
None => Ok ( ( ) ) ,
122
116
}
123
- } ) ) ;
117
+ } ) ? ;
124
118
125
- try!(
126
- file. borrow_mut ( )
127
- . sync_data ( )
128
- . chain_err ( || "unable to sync download to disk" )
129
- ) ;
119
+ file. borrow_mut ( )
120
+ . sync_data ( )
121
+ . chain_err ( || "unable to sync download to disk" ) ?;
130
122
131
123
Ok ( ( ) )
132
124
} ( )
@@ -161,35 +153,27 @@ pub mod curl {
161
153
EASY . with ( |handle| {
162
154
let mut handle = handle. borrow_mut ( ) ;
163
155
164
- try!(
165
- handle
166
- . url ( & url. to_string ( ) )
167
- . chain_err ( || "failed to set url" )
168
- ) ;
169
- try!(
170
- handle
171
- . follow_location ( true )
172
- . chain_err ( || "failed to set follow redirects" )
173
- ) ;
156
+ handle
157
+ . url ( & url. to_string ( ) )
158
+ . chain_err ( || "failed to set url" ) ?;
159
+ handle
160
+ . follow_location ( true )
161
+ . chain_err ( || "failed to set follow redirects" ) ?;
174
162
175
163
if resume_from > 0 {
176
- try!(
177
- handle
178
- . resume_from ( resume_from)
179
- . chain_err ( || "setting the range header for download resumption" )
180
- ) ;
164
+ handle
165
+ . resume_from ( resume_from)
166
+ . chain_err ( || "setting the range header for download resumption" ) ?;
181
167
} else {
182
168
// an error here indicates that the range header isn't supported by underlying curl,
183
169
// so there's nothing to "clear" - safe to ignore this error.
184
170
let _ = handle. resume_from ( 0 ) ;
185
171
}
186
172
187
173
// Take at most 30s to connect
188
- try!(
189
- handle
190
- . connect_timeout ( Duration :: new ( 30 , 0 ) )
191
- . chain_err ( || "failed to set connect timeout" )
192
- ) ;
174
+ handle
175
+ . connect_timeout ( Duration :: new ( 30 , 0 ) )
176
+ . chain_err ( || "failed to set connect timeout" ) ?;
193
177
194
178
{
195
179
let cberr = RefCell :: new ( None ) ;
@@ -198,47 +182,42 @@ pub mod curl {
198
182
// Data callback for libcurl which is called with data that's
199
183
// downloaded. We just feed it into our hasher and also write it out
200
184
// to disk.
201
- try!(
202
- transfer
203
- . write_function ( |data| match callback ( Event :: DownloadDataReceived ( data) ) {
204
- Ok ( ( ) ) => Ok ( data. len ( ) ) ,
205
- Err ( e) => {
206
- * cberr. borrow_mut ( ) = Some ( e) ;
207
- Ok ( 0 )
208
- }
209
- } )
210
- . chain_err ( || "failed to set write" )
211
- ) ;
185
+ transfer
186
+ . write_function ( |data| match callback ( Event :: DownloadDataReceived ( data) ) {
187
+ Ok ( ( ) ) => Ok ( data. len ( ) ) ,
188
+ Err ( e) => {
189
+ * cberr. borrow_mut ( ) = Some ( e) ;
190
+ Ok ( 0 )
191
+ }
192
+ } )
193
+ . chain_err ( || "failed to set write" ) ?;
212
194
213
195
// Listen for headers and parse out a `Content-Length` if it comes
214
196
// so we know how much we're downloading.
215
- try!(
216
- transfer
217
- . header_function ( |header| {
218
- if let Ok ( data) = str:: from_utf8 ( header) {
219
- let prefix = "Content-Length: " ;
220
- if data. starts_with ( prefix) {
221
- if let Ok ( s) = data[ prefix. len ( ) ..] . trim ( ) . parse :: < u64 > ( ) {
222
- let msg =
223
- Event :: DownloadContentLengthReceived ( s + resume_from) ;
224
- match callback ( msg) {
225
- Ok ( ( ) ) => ( ) ,
226
- Err ( e) => {
227
- * cberr. borrow_mut ( ) = Some ( e) ;
228
- return false ;
229
- }
197
+ transfer
198
+ . header_function ( |header| {
199
+ if let Ok ( data) = str:: from_utf8 ( header) {
200
+ let prefix = "Content-Length: " ;
201
+ if data. starts_with ( prefix) {
202
+ if let Ok ( s) = data[ prefix. len ( ) ..] . trim ( ) . parse :: < u64 > ( ) {
203
+ let msg = Event :: DownloadContentLengthReceived ( s + resume_from) ;
204
+ match callback ( msg) {
205
+ Ok ( ( ) ) => ( ) ,
206
+ Err ( e) => {
207
+ * cberr. borrow_mut ( ) = Some ( e) ;
208
+ return false ;
230
209
}
231
210
}
232
211
}
233
212
}
234
- true
235
- } )
236
- . chain_err ( || "failed to set header" )
237
- ) ;
213
+ }
214
+ true
215
+ } )
216
+ . chain_err ( || "failed to set header" ) ? ;
238
217
239
218
// If an error happens check to see if we had a filesystem error up
240
219
// in `cberr`, but we always want to punt it up.
241
- try! ( transfer. perform ( ) . or_else ( |e| {
220
+ transfer. perform ( ) . or_else ( |e| {
242
221
// If the original error was generated by one of our
243
222
// callbacks, return it.
244
223
match cberr. borrow_mut ( ) . take ( ) {
@@ -252,15 +231,13 @@ pub mod curl {
252
231
}
253
232
}
254
233
}
255
- } ) ) ;
234
+ } ) ? ;
256
235
}
257
236
258
237
// If we didn't get a 20x or 0 ("OK" for files) then return an error
259
- let code = try!(
260
- handle
261
- . response_code ( )
262
- . chain_err ( || "failed to get response code" )
263
- ) ;
238
+ let code = handle
239
+ . response_code ( )
240
+ . chain_err ( || "failed to get response code" ) ?;
264
241
match code {
265
242
0 | 200 ...299 => { }
266
243
_ => {
@@ -362,10 +339,8 @@ pub mod reqwest_be {
362
339
363
340
// The file scheme is mostly for use by tests to mock the dist server
364
341
if url. scheme ( ) == "file" {
365
- let src = try!(
366
- url. to_file_path ( )
367
- . map_err ( |_| Error :: from ( format ! ( "bogus file url: '{}'" , url) ) )
368
- ) ;
342
+ let src = url. to_file_path ( )
343
+ . map_err ( |_| Error :: from ( format ! ( "bogus file url: '{}'" , url) ) ) ?;
369
344
if !src. is_file ( ) {
370
345
// Because some of rustup's logic depends on checking
371
346
// the error when a downloaded file doesn't exist, make
@@ -374,20 +349,17 @@ pub mod reqwest_be {
374
349
return Err ( ErrorKind :: FileNotFound . into ( ) ) ;
375
350
}
376
351
377
- let ref mut f =
378
- try!( fs:: File :: open ( src) . chain_err ( || "unable to open downloaded file" ) ) ;
352
+ let ref mut f = fs:: File :: open ( src) . chain_err ( || "unable to open downloaded file" ) ?;
379
353
io:: Seek :: seek ( f, io:: SeekFrom :: Start ( resume_from) ) ?;
380
354
381
355
let ref mut buffer = vec ! [ 0u8 ; 0x10000 ] ;
382
356
loop {
383
357
let bytes_read =
384
- try! ( io:: Read :: read ( f, buffer) . chain_err ( || "unable to read downloaded file" ) ) ;
358
+ io:: Read :: read ( f, buffer) . chain_err ( || "unable to read downloaded file" ) ? ;
385
359
if bytes_read == 0 {
386
360
break ;
387
361
}
388
- try!( callback ( Event :: DownloadDataReceived (
389
- & buffer[ 0 ..bytes_read]
390
- ) ) ) ;
362
+ callback ( Event :: DownloadDataReceived ( & buffer[ 0 ..bytes_read] ) ) ?;
391
363
}
392
364
393
365
Ok ( true )
0 commit comments