Trait RefEditsExt

Source
pub trait RefEditsExt<T>{
    // Required methods
    fn assure_one_name_has_one_edit(&self) -> Result<(), BString>;
    fn extend_with_splits_of_symbolic_refs(
        &mut self,
        find: impl FnMut(&PartialNameRef) -> Option<Target>,
        make_entry: impl FnMut(usize, RefEdit) -> T,
    ) -> Result<(), Error>;

    // Provided method
    fn pre_process(
        &mut self,
        find: impl FnMut(&PartialNameRef) -> Option<Target>,
        make_entry: impl FnMut(usize, RefEdit) -> T,
    ) -> Result<(), Error> { ... }
}
Expand description

An extension trait to perform commonly used operations on edits across different ref stores.

Required Methods§

Source

fn assure_one_name_has_one_edit(&self) -> Result<(), BString>

Return true if each ref name has exactly one edit across multiple ref edits

Source

fn extend_with_splits_of_symbolic_refs( &mut self, find: impl FnMut(&PartialNameRef) -> Option<Target>, make_entry: impl FnMut(usize, RefEdit) -> T, ) -> Result<(), Error>

Split all symbolic refs into updates for the symbolic ref as well as all their referents if the deref flag is enabled.

Note no action is performed if deref isn’t specified.

Provided Methods§

Source

fn pre_process( &mut self, find: impl FnMut(&PartialNameRef) -> Option<Target>, make_entry: impl FnMut(usize, RefEdit) -> T, ) -> Result<(), Error>

All processing steps in one and in the correct order.

Users call this to assure derefs are honored and duplicate checks are done.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<E> RefEditsExt<E> for Vec<E>

Implementors§