feat(client): expose connect types without proto feature (#2377)
				
					
				
			Make it possible to refer to Connected, Connection, HttpConnector, etc. without enabling either of the http1/http2 features. This makes feature selection work better for downstream libraries like hyper-openssl, which don't want to commit to any particular protocol. Fix #2376.
This commit is contained in:
		
							
								
								
									
										1233
									
								
								src/client/client.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1233
									
								
								src/client/client.rs
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -27,6 +27,7 @@ use super::{Connected, Connection}; | ||||
| /// | ||||
| /// Sets the [`HttpInfo`](HttpInfo) value on responses, which includes | ||||
| /// transport information such as the remote socket address used. | ||||
| #[cfg_attr(docsrs, doc(cfg(feature = "tcp")))] | ||||
| #[derive(Clone)] | ||||
| pub struct HttpConnector<R = GaiResolver> { | ||||
|     config: Arc<Config>, | ||||
|   | ||||
| @@ -83,13 +83,20 @@ use std::fmt; | ||||
|  | ||||
| use ::http::Extensions; | ||||
|  | ||||
| #[cfg(feature = "tcp")] | ||||
| pub mod dns; | ||||
| #[cfg(feature = "tcp")] | ||||
| mod http; | ||||
| #[cfg(feature = "tcp")] | ||||
| pub use self::http::{HttpConnector, HttpInfo}; | ||||
| pub use self::sealed::Connect; | ||||
| cfg_feature! { | ||||
|     #![feature = "tcp"] | ||||
|  | ||||
|     pub use self::http::{HttpConnector, HttpInfo}; | ||||
|  | ||||
|     pub mod dns; | ||||
|     mod http; | ||||
| } | ||||
|  | ||||
| cfg_feature! { | ||||
|     #![any(feature = "http1", feature = "http2")] | ||||
|  | ||||
|     pub use self::sealed::Connect; | ||||
| } | ||||
|  | ||||
| /// Describes a type returned by a connector. | ||||
| pub trait Connection { | ||||
| @@ -260,6 +267,7 @@ where | ||||
|     } | ||||
| } | ||||
|  | ||||
| #[cfg(any(feature = "http1", feature = "http2"))] | ||||
| pub(super) mod sealed { | ||||
|     use std::error::Error as StdError; | ||||
|  | ||||
|   | ||||
							
								
								
									
										1241
									
								
								src/client/mod.rs
									
									
									
									
									
								
							
							
						
						
									
										1241
									
								
								src/client/mod.rs
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -10,7 +10,7 @@ use futures_channel::oneshot; | ||||
| #[cfg(feature = "runtime")] | ||||
| use tokio::time::{Duration, Instant, Interval}; | ||||
|  | ||||
| use super::Ver; | ||||
| use super::client::Ver; | ||||
| use crate::common::{task, exec::Exec, Future, Pin, Poll, Unpin}; | ||||
|  | ||||
| // FIXME: allow() required due to `impl Trait` leaking types to this lint | ||||
|   | ||||
							
								
								
									
										10
									
								
								src/lib.rs
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/lib.rs
									
									
									
									
									
								
							| @@ -58,7 +58,11 @@ | ||||
|  | ||||
| #[doc(hidden)] | ||||
| pub use http; | ||||
| #[cfg(any(feature = "http1", feature = "http2"))] | ||||
| #[cfg(any( | ||||
|     feature = "http1", | ||||
|     feature = "http2", | ||||
|     all(feature = "client", feature = "tcp") | ||||
| ))] | ||||
| #[macro_use] | ||||
| extern crate tracing; | ||||
|  | ||||
| @@ -89,9 +93,11 @@ cfg_proto! { | ||||
| } | ||||
|  | ||||
| cfg_feature! { | ||||
|     #![all(feature = "client", any(feature = "http1", feature = "http2"))] | ||||
|     #![all(feature = "client")] | ||||
|  | ||||
|     pub mod client; | ||||
|     #[cfg(any(feature = "http1", feature = "http2"))] | ||||
|     #[doc(no_inline)] | ||||
|     pub use crate::client::Client; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -91,6 +91,7 @@ where | ||||
|         self.read_buf_strategy = ReadStrategy::Exact(sz); | ||||
|     } | ||||
|  | ||||
|     #[cfg(feature = "server")] | ||||
|     pub fn set_write_strategy_flatten(&mut self) { | ||||
|         // this should always be called only at construction time, | ||||
|         // so this assert is here to catch myself | ||||
| @@ -475,6 +476,7 @@ impl<B> WriteBuf<B> | ||||
| where | ||||
|     B: Buf, | ||||
| { | ||||
|     #[cfg(feature = "server")] | ||||
|     fn set_strategy(&mut self, strategy: WriteStrategy) { | ||||
|         self.strategy = strategy; | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user