Skip to main content

Transaction

Struct Transaction 

Source
pub struct Transaction<'a> { /* private fields */ }
Expand description

One in-flight MULTI block over a Remote connection.

Drop without calling Self::exec / Self::exec_watched / Self::discard sends an implicit DISCARD so the underlying socket isn’t left in MULTI mode.

Implementations§

Source§

impl<'a> Transaction<'a>

Source

pub fn queue(&mut self, parts: &[&[u8]]) -> Result<()>

Queue one command — verb + args as raw byte slices. The server replies +QUEUED synchronously; errors propagate as io::Error.

Source

pub fn exec(self) -> Result<Vec<Reply>>

EXEC — send EXEC, return the per-queued-command reply array. Consumes the transaction handle.

When a WATCH violation aborts the transaction the server returns Nil; this method collapses that into an empty Vec for backward compatibility with v1.4.x. For new code, prefer exec_watched, which distinguishes “aborted by WATCH” (returns None) from “successful empty transaction” (returns Some(vec![])).

Source

pub fn exec_watched(self) -> Result<Option<Vec<Reply>>>

Like exec but returns None when a WATCH violation aborts the transaction (RESP Nil reply to EXEC). Use this when you’ve called Connection::watch and need to distinguish an abort from a successfully-empty queue.

Source

pub fn exec_typed(self) -> Result<TransactionReplies>

Like exec but returns a TransactionReplies cursor with typed extractors (next_int, next_bulk, …) so callers don’t hand-match every Reply themselves. Aborts with io::ErrorKind::InvalidData (“transaction aborted by WATCH”) if the server replied Nil; use exec_watched_typed to distinguish abort from successfully-empty.

Consumes the handle. The cursor remembers how many replies are left (TransactionReplies::remaining) so callers can sanity- check arity at the end of the read sequence.

Source

pub fn exec_watched_typed(self) -> Result<Option<TransactionReplies>>

Like exec_watched but returns a typed TransactionReplies cursor on commit; None on WATCH abort.

Source

pub fn discard(self) -> Result<()>

DISCARD — abandon the queued commands. Consumes the handle.

Source§

impl<'a> Transaction<'a>

Source

pub fn set(&mut self, key: &[u8], value: &[u8]) -> Result<&mut Self>

Queue SET key value.

Source

pub fn get(&mut self, key: &[u8]) -> Result<&mut Self>

Queue GET key.

Source

pub fn del(&mut self, keys: &[&[u8]]) -> Result<&mut Self>

Queue DEL key [key ...].

Source

pub fn exists(&mut self, keys: &[&[u8]]) -> Result<&mut Self>

Queue EXISTS key [key ...].

Source

pub fn incr(&mut self, key: &[u8]) -> Result<&mut Self>

Queue INCR key.

Source

pub fn incr_by(&mut self, key: &[u8], delta: i64) -> Result<&mut Self>

Queue INCRBY key delta.

Source

pub fn mget(&mut self, keys: &[&[u8]]) -> Result<&mut Self>

Queue MGET key [key ...].

Source

pub fn mset(&mut self, pairs: &[(&[u8], &[u8])]) -> Result<&mut Self>

Queue MSET key value [key value ...].

Trait Implementations§

Source§

impl Debug for Transaction<'_>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for Transaction<'_>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

§

impl<'a> !UnwindSafe for Transaction<'a>

§

impl<'a> Freeze for Transaction<'a>

§

impl<'a> RefUnwindSafe for Transaction<'a>

§

impl<'a> Send for Transaction<'a>

§

impl<'a> Sync for Transaction<'a>

§

impl<'a> Unpin for Transaction<'a>

§

impl<'a> UnsafeUnpin for Transaction<'a>

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> 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, 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.