#[non_exhaustive]pub enum TransactionOp {
Replace {
node: NodeRef,
source: String,
},
Insert {
target: NodeRef,
position: InsertPosition,
source: String,
},
Remove {
node: NodeRef,
},
If {
condition: TransactionCondition,
then: Vec<TransactionOp>,
else_: Vec<TransactionOp>,
},
}Expand description
A single operation within a transaction.
Ops are applied sequentially to an in-memory buffer. When mutating the
same file multiple times, order ops by descending start_byte to avoid
byte-offset drift.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
Replace
Replace a node’s source text.
Insert
Insert source text relative to a target node.
Fields
§
position: InsertPositionWhere to insert: before, after, or into.
Remove
Remove a node.
If
Execute then if condition holds against the current buffer, else else.
Fields
§
condition: TransactionConditionCondition to evaluate against the current in-memory buffer.
§
then: Vec<TransactionOp>Ops to run if the condition is true.
§
else_: Vec<TransactionOp>Ops to run if the condition is false. Empty means no-op.
Trait Implementations§
Source§impl Clone for TransactionOp
impl Clone for TransactionOp
Source§fn clone(&self) -> TransactionOp
fn clone(&self) -> TransactionOp
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for TransactionOp
impl Debug for TransactionOp
Source§impl<'de> Deserialize<'de> for TransactionOp
impl<'de> Deserialize<'de> for TransactionOp
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for TransactionOp
impl RefUnwindSafe for TransactionOp
impl Send for TransactionOp
impl Sync for TransactionOp
impl Unpin for TransactionOp
impl UnsafeUnpin for TransactionOp
impl UnwindSafe for TransactionOp
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more