Skip to main content

Transaction

Struct Transaction 

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

A transaction groups multiple edits for atomic undo/redo.

When a transaction is undone, all its edits are reversed in reverse order. When redone, all edits are applied in original order.

§Example

use reovim_kernel::api::v1::*;

let mut txn = Transaction::new();
txn.push(Edit::insert(Position::new(0, 0), "Hello"));
txn.push(Edit::insert(Position::new(0, 5), " World"));

assert_eq!(txn.len(), 2);
assert!(!txn.is_empty());

// Get inverse for undo
let inverse = txn.inverse();
assert_eq!(inverse.len(), 2);
// Inverse edits are in reverse order

Implementations§

Source§

impl Transaction

Source

pub const fn new() -> Self

Create a new empty transaction.

Source

pub fn iter(&self) -> Iter<'_, Edit>

Returns an iterator over the edits.

Source

pub fn with_capacity(capacity: usize) -> Self

Create a transaction with pre-allocated capacity.

Source

pub fn push(&mut self, edit: Edit)

Add an edit to this transaction.

Source

pub fn edits(&self) -> &[Edit]

Get all edits in this transaction.

Source

pub fn into_edits(self) -> Vec<Edit>

Consume the transaction and return the edits.

Source

pub const fn is_empty(&self) -> bool

Check if this transaction has no edits.

Source

pub const fn len(&self) -> usize

Get the number of edits in this transaction.

Source

pub fn inverse(&self) -> Self

Create the inverse of this transaction (for undo).

The inverse contains the inverse of each edit, in reverse order. Applying the inverse undoes the original transaction.

Source

pub fn clear(&mut self)

Clear all edits from this transaction.

Trait Implementations§

Source§

impl Clone for Transaction

Source§

fn clone(&self) -> Transaction

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
Source§

impl Debug for Transaction

Source§

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

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

impl Default for Transaction

Source§

fn default() -> Transaction

Returns the “default value” for a type. Read more
Source§

impl From<Edit> for Transaction

Source§

fn from(edit: Edit) -> Self

Converts to this type from the input type.
Source§

impl From<Vec<Edit>> for Transaction

Source§

fn from(edits: Vec<Edit>) -> Self

Converts to this type from the input type.
Source§

impl<'a> IntoIterator for &'a Transaction

Source§

type Item = &'a Edit

The type of the elements being iterated over.
Source§

type IntoIter = Iter<'a, Edit>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
Source§

impl IntoIterator for Transaction

Source§

type Item = Edit

The type of the elements being iterated over.
Source§

type IntoIter = IntoIter<Edit>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. 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> 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.