When configuring a Redis connection pool with deadpool-redis, users need to set the queue_mode field in PoolConfig. However, the QueueMode type is actually defined in the deadpool::managed module, not re-exported by deadpool-redis. This causes confusion and compilation errors.
Current situation:
Users might try to import QueueMode from deadpool-redis:
use deadpool_redis::{Config, PoolConfig, QueueMode}; // ❌ Error: QueueMode not found
But the correct import should be:
use deadpool::managed::QueueMode; // ✅ Works, but requires adding `deadpool` dependency
Example code that fails:
use deadpool_redis::{Config, Pool, Runtime, PoolConfig, Timeouts};
use std::env;
use std::time::Duration;
pub async fn create_pool() -> Result<(), Box<dyn std::error::Error>> {
let url = env::var("REDIS_URL")?;
let mut cfg = Config::from_url(url);
cfg.pool = Some(PoolConfig {
max_size: 16,
timeouts: Timeouts {
wait: Some(Duration::from_millis(200)),
create: Some(Duration::from_millis(500)),
recycle: Some(Duration::from_millis(100)),
},
queue_mode: ???, // What should go here? QueueMode is not in scope
});
let pool = cfg.create_pool(Some(Runtime::Tokio1))?;
Ok(())
}
Possible solutions:
-
Re-export QueueMode in deadpool-redis so users don't need to depend on deadpool directly:
// In deadpool-redis lib.rs
pub use deadpool::managed::QueueMode;
-
Add clearer documentation showing the correct import path and an example of configuring queue_mode.
-
Make queue_mode optional with a sensible default (e.g., QueueMode::Fifo) so users don't need to specify it unless they want to change it.
Current workaround:
Users must add deadpool as a direct dependency and import from there:
[dependencies]
deadpool-redis = "0.12"
deadpool = "0.10" # Required for QueueMode
use deadpool::managed::QueueMode;
use deadpool_redis::{Config, PoolConfig, Timeouts};
// Now can use QueueMode::Fifo or QueueMode::Lifo
Expected behavior:
Either QueueMode should be re-exported by deadpool-redis, or PoolConfig should provide a way to set the queue mode without requiring users to import types from the base deadpool crate.
Environment:
deadpool-redis version: 0.12.x
deadpool version: 0.10.x
- Rust version: 1.70+
When configuring a Redis connection pool with
deadpool-redis, users need to set thequeue_modefield inPoolConfig. However, theQueueModetype is actually defined in thedeadpool::managedmodule, not re-exported bydeadpool-redis. This causes confusion and compilation errors.Current situation:
Users might try to import
QueueModefromdeadpool-redis:But the correct import should be:
Example code that fails:
Possible solutions:
Re-export
QueueModeindeadpool-redisso users don't need to depend ondeadpooldirectly:Add clearer documentation showing the correct import path and an example of configuring
queue_mode.Make
queue_modeoptional with a sensible default (e.g.,QueueMode::Fifo) so users don't need to specify it unless they want to change it.Current workaround:
Users must add
deadpoolas a direct dependency and import from there:Expected behavior:
Either
QueueModeshould be re-exported bydeadpool-redis, orPoolConfigshould provide a way to set the queue mode without requiring users to import types from the basedeadpoolcrate.Environment:
deadpool-redisversion: 0.12.xdeadpoolversion: 0.10.x