If your semver requirements on r2d2 overlap with diesel’s then you will have a singular version. If they are not compatible you will have two. The majority of rust crates work fine with multiple versions in the dependencies, and Rust was designed to make doing this easy. For example even if you did have multiple versions of the same crate their types shouldn’t be compatible and won’t compile if you mix both versions. The main thing that breaks multi version compatibility is if there is something that must be a singleton, which Rust tries to discourage. I doubt there’s anything requiring a singleton within r2d2.
As previously pointed out diesel just reexports r2d2 + some of it’s own integration functions, so diesel::r2d2 should be fully functional.
But note that r2d2_redis itself depends on r2d2. So it’s semver constraints aren’t compatible with either your crate or diesel’s then you’ll have multiple versions again. But like I said in 1 that shouldn’t cause any issues.