@@ -26,7 +26,9 @@ const REQWEST_RUSTLS_TLS_USER_AGENT: &str =
26
26
27
27
#[ derive( Debug , Copy , Clone ) ]
28
28
pub enum Backend {
29
+ #[ cfg( feature = "curl-backend" ) ]
29
30
Curl ,
31
+ #[ cfg( any( feature = "reqwest-rustls-tls" , feature = "reqwest-native-tls" ) ) ]
30
32
Reqwest ( TlsBackend ) ,
31
33
}
32
34
@@ -140,14 +142,24 @@ impl Backend {
140
142
Ok :: < ( ) , anyhow:: Error > ( ( ) )
141
143
}
142
144
145
+ #[ cfg_attr(
146
+ all(
147
+ not( feature = "curl-backend" ) ,
148
+ not( feature = "reqwest-rustls-tls" ) ,
149
+ not( feature = "reqwest-native-tls" )
150
+ ) ,
151
+ allow( unused_variables)
152
+ ) ]
143
153
async fn download (
144
154
self ,
145
155
url : & Url ,
146
156
resume_from : u64 ,
147
157
callback : DownloadCallback < ' _ > ,
148
158
) -> Result < ( ) > {
149
159
match self {
160
+ #[ cfg( feature = "curl-backend" ) ]
150
161
Self :: Curl => curl:: download ( url, resume_from, callback) ,
162
+ #[ cfg( any( feature = "reqwest-rustls-tls" , feature = "reqwest-native-tls" ) ) ]
151
163
Self :: Reqwest ( tls) => reqwest_be:: download ( url, resume_from, callback, tls) . await ,
152
164
}
153
165
}
@@ -170,13 +182,6 @@ pub enum Event<'a> {
170
182
171
183
type DownloadCallback < ' a > = & ' a dyn Fn ( Event < ' _ > ) -> Result < ( ) > ;
172
184
173
- #[ cfg( all(
174
- not( feature = "reqwest-rustls-tls" ) ,
175
- not( feature = "reqwest-native-tls" ) ,
176
- not( feature = "curl-backend" )
177
- ) ) ]
178
- compile_error ! ( "Must enable at least one backend" ) ;
179
-
180
185
/// Download via libcurl; encrypt with the native (or OpenSSl) TLS
181
186
/// stack via libcurl
182
187
#[ cfg( feature = "curl-backend" ) ]
@@ -494,39 +499,3 @@ pub enum DownloadError {
494
499
#[ error( transparent) ]
495
500
CurlError ( #[ from] :: curl:: Error ) ,
496
501
}
497
-
498
- #[ cfg( not( feature = "curl-backend" ) ) ]
499
- pub mod curl {
500
- use anyhow:: { anyhow, Result } ;
501
- use url:: Url ;
502
-
503
- use super :: { DownloadError , Event } ;
504
-
505
- pub fn download (
506
- _url : & Url ,
507
- _resume_from : u64 ,
508
- _callback : & dyn Fn ( Event < ' _ > ) -> Result < ( ) > ,
509
- ) -> Result < ( ) > {
510
- Err ( anyhow ! ( DownloadError :: BackendUnavailable ( "curl" ) ) )
511
- }
512
- }
513
-
514
- #[ cfg( all(
515
- not( feature = "reqwest-rustls-tls" ) ,
516
- not( feature = "reqwest-native-tls" )
517
- ) ) ]
518
- pub mod reqwest_be {
519
- use anyhow:: { anyhow, Result } ;
520
- use url:: Url ;
521
-
522
- use super :: { DownloadError , Event , TlsBackend } ;
523
-
524
- pub async fn download (
525
- _url : & Url ,
526
- _resume_from : u64 ,
527
- _callback : & dyn Fn ( Event < ' _ > ) -> Result < ( ) > ,
528
- _tls : TlsBackend ,
529
- ) -> Result < ( ) > {
530
- Err ( anyhow ! ( DownloadError :: BackendUnavailable ( "reqwest" ) ) )
531
- }
532
- }
0 commit comments