ConnectionPool

Struct ConnectionPool 

Source
pub struct ConnectionPool { /* private fields */ }
Expand description

A pool of rusqlite::Connections.

Internally, the pool is represented with a fixed-capacity, thread-safe queue.

Implementations§

Source§

impl ConnectionPool

Source

pub fn new<F>(capacity: usize, new_conn_fn: F) -> Result<Self, Error>
where F: Fn() -> Result<Connection, Error>,

Create a new connection pool.

This opens capacity number of connections using new_conn_fn and adds them to the inner queue.

If any of the connections fail to open, all previously successful connections (if any) are dropped and the error is returned.

Source

pub fn pop(&self) -> Option<ConnectionHandle>

Pop a connection from the queue if one is available.

If None is returned, all connections are currently in use.

The inner connection is returned to the pool upon dropping the handle.

Source

pub fn capacity(&self) -> usize

The total number of simultaneous connections managed by the pool, specified by the user upon construction.

Source

pub fn all_connections_ready(&self) -> bool

Returns true if the inner idle queue is full, i.e. all Connections are available for use.

Source

pub fn close(&self) -> Vec<Result<(), (Connection, Error)>>

Manually close the pool and all connections in the inner queue.

Returns the Connection::close result for each connection in the queue.

If it is necessary that results are returned for all connections, care must be taken to ensure all ConnectionHandles are dropped and that all_connections_ready returns true before calling this method. Otherwise, connections not in the queue will be closed upon the last ConnectionHandle dropping.

All connections closed during this call will be unavailable in future calls to pop.

Trait Implementations§

Source§

impl Clone for ConnectionPool

Source§

fn clone(&self) -> ConnectionPool

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.