Op

Enum Op 

Source
pub enum Op<'doc> {
    RewriteFragment {
        from: Subfeature<'doc>,
        to: Cow<'doc, str>,
    },
    ReplaceComment {
        new: Cow<'doc, str>,
    },
    EmplaceComment {
        new: Cow<'doc, str>,
    },
    Replace(Value),
    Add {
        key: String,
        value: Value,
    },
    MergeInto {
        key: String,
        updates: IndexMap<String, Value>,
    },
    Remove,
    Append {
        value: Value,
    },
}
Expand description

Represents a YAML patch operation.

Variants§

§

RewriteFragment

Rewrites a fragment of a feature at the given path.

This can be used to perform graceful rewrites of string values, regardless of their nested position or single/multi-line nature.

For example, the following:

run: |
  echo "foo: ${{ foo }}"

can be rewritten to:

run: |
  echo "foo ${FOO}"

via a RewriteFragment with:

route: "/run",
from: "${{ foo }}",
to: "${FOO}",

This operation performs exactly one rewrite at a time, meaning that the first match of from in the feature will be replaced.

This can be made more precise by passing a after index, which specifies that the rewrite should only occur on the first match of from that occurs after the given byte index.

Fields

§from: Subfeature<'doc>
§to: Cow<'doc, str>
§

ReplaceComment

Replace a comment at the given path.

This operation replaces the entire comment associated with the feature at the given path with the new comment.

The entire comment is replaced at once, and only one matching comment is permitted. Features that don’t have an associated comment are ignored, while features with multiple comments will be rejected.

Fields

§new: Cow<'doc, str>
§

EmplaceComment

Emplace a comment at the given path.

This is like ReplaceComment, but will insert a new comment if none exists.

Fields

§new: Cow<'doc, str>
§

Replace(Value)

Replace the value at the given path

§

Add

Add a new key-value pair at the given path.

The route should point to a mapping.

Limitations:

  • The mapping must be a block mapping or single-line flow mapping. Multi-line flow mappings are not currently supported.
  • The key must not already exist in the targeted mapping.

Fields

§value: Value
§

MergeInto

Update a mapping at the given path.

If the mapping does not already exist, it will be created.

Fields

§

Remove

Remove the key at the given path

§

Append

Append a new item to a sequence at the given path.

The sequence must be a block sequence; flow sequences are not supported.

Fields

§value: Value

Trait Implementations§

Source§

impl<'doc> Clone for Op<'doc>

Source§

fn clone(&self) -> Op<'doc>

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<'doc> Debug for Op<'doc>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'doc> Freeze for Op<'doc>

§

impl<'doc> RefUnwindSafe for Op<'doc>

§

impl<'doc> Send for Op<'doc>

§

impl<'doc> Sync for Op<'doc>

§

impl<'doc> Unpin for Op<'doc>

§

impl<'doc> UnwindSafe for Op<'doc>

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.