ConnectionPool::default: Explicit implementation

The auto-derived implementation would have unexpectedly initialized the
`usize` fields to 0. Having a `::default()` leading to an unuseable value
is counter-intuitive.
This commit is contained in:
Ulrik
2020-09-15 16:59:40 +02:00
committed by Martin Algesten
parent c343587afb
commit 90d0b35ae5

View File

@@ -19,7 +19,7 @@ const DEFAULT_MAX_IDLE_CONNECTIONS_PER_HOST: usize = 1;
/// Invariant: Each PoolKey exists in recycle at most once and lru at most once. /// Invariant: Each PoolKey exists in recycle at most once and lru at most once.
/// ///
/// *Internal API* /// *Internal API*
#[derive(Default, Debug)] #[derive(Debug)]
pub(crate) struct ConnectionPool { pub(crate) struct ConnectionPool {
// the actual pooled connection. however only one per hostname:port. // the actual pooled connection. however only one per hostname:port.
recycle: HashMap<PoolKey, VecDeque<Stream>>, recycle: HashMap<PoolKey, VecDeque<Stream>>,
@@ -32,14 +32,21 @@ pub(crate) struct ConnectionPool {
max_idle_connections_per_host: usize, max_idle_connections_per_host: usize,
} }
impl ConnectionPool { impl Default for ConnectionPool {
pub fn new() -> Self { fn default() -> Self {
ConnectionPool { Self {
max_idle_connections: DEFAULT_MAX_IDLE_CONNECTIONS, max_idle_connections: DEFAULT_MAX_IDLE_CONNECTIONS,
max_idle_connections_per_host: DEFAULT_MAX_IDLE_CONNECTIONS_PER_HOST, max_idle_connections_per_host: DEFAULT_MAX_IDLE_CONNECTIONS_PER_HOST,
..Default::default() recycle: HashMap::default(),
lru: VecDeque::default(),
} }
} }
}
impl ConnectionPool {
pub fn new() -> Self {
Self::default()
}
pub fn set_max_idle_connections(&mut self, max_connections: usize) { pub fn set_max_idle_connections(&mut self, max_connections: usize) {
if self.max_idle_connections == max_connections { if self.max_idle_connections == max_connections {