Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #72
This adds
Pool::get_owned
which returnsResult<PooledConnection<'static, M>, _>
. The'static
means this pool is "detached" from the lifetime of the pool itself and can thus be used where the lifetime the pool gets in the way.Considerations I made:
OwnedPooledConnection<M>
(similar totokio::sync::OwnedSemaphorePermit
). However I imagine having two types of connections will be when you have to abstract overOwnedPooledConnection
andPooledConnection
.PooledConnection
keep either astd::sync::Weak<PoolInner<M>>
or a&'a PoolInner<M>
. However that would require callingArc::upgrade
for most operations and how would one handle the case where that returnsNone
? I guess pancking is the only option but I don't think thats ideal. I think storing an ownedPoolInner<M>
is nicer and leads to fewer surprises, though it does make it possible to leak the pool.I have verified that this works for my use-case.