Skip to main content

Edits

Struct Edits 

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

The document as a host lends it to one pass that may change it: read freely, changed only through a typed action the action host applies (a resource’s dispatcher applies it), so every change is an action that is attributed, recorded in history and undone like any other. Direct CRDT mutation is rejected at the widget boundary:

ⓘ
use automerge::{ROOT, transaction::Transactable};
use tilo_ui::widget::Edits;
fn bypass(edits: &mut Edits<'_>) {
    edits.put(ROOT, "bypass", true).unwrap();
}

Implementations§

§

impl<'a> Edits<'a>

pub fn doc(&self) -> &AutoCommit

The document as it stands, with what this pass applied.

pub fn reborrow(&mut self) -> Edits<'_>

The same document, lent on to a part of the pass.

Methods from Deref<Target = AutoCommit>§

pub fn diff_opset(&self, other: &AutoCommit) -> Result<(), AutomergeError>

pub fn diff_cursor(&self) -> Vec<ChangeHash>

Returns the cursor set by Self::update_diff_cursor()

pub fn make_patches(&self, patch_log: &mut PatchLog) -> Vec<Patch>

Generate the patches recorded in patch_log

pub fn committed_document(&self) -> &Automerge

The committed document: everything but the changes of a transaction still open. Reads it without closing that transaction, so a holder of &self can read history; a host that commits before handing the document out sees all of it.

pub fn committed_heads(&self) -> Vec<ChangeHash>

The heads of the committed document (Self::committed_document), or of the isolated view when the document is isolated: what Self::get_heads answers once no transaction is open.

pub fn committed_fork_at( &self, heads: &[ChangeHash], ) -> Result<AutoCommit, AutomergeError>

A copy of the committed document (Self::committed_document) as it was at heads: what Self::fork_at makes, read from &self.

pub fn committed_diff( &self, before: &[ChangeHash], after: &[ChangeHash], ) -> Vec<Patch>

The patches from before to after in the committed document (Self::committed_document), without the diff cursor or cache Self::diff keeps.

pub fn get_actor(&self) -> &ActorId

pub fn get_actors_for_author(&self, author: &Author<'_>) -> Vec<ActorId>

pub fn get_author_for_actor(&self, actor: &ActorId) -> Option<Author<'_>>

pub fn get_author(&self) -> Option<&Author<'static>>

pub fn get_authors(&self) -> &[Author<'static>]

pub fn bundle<I>(&self, hashes: I) -> Result<Bundle, AutomergeError>
where I: IntoIterator<Item = ChangeHash>,

EXPERIMENTAL: Write the set of changes in hashes to a “bundle”

A “bundle” is a compact representation of a set of changes which uses the same compression tricks as the document encoding we use in Automerge::save.

This is an experimental API, the bundle format is still subject to change and so should not be used in production just yet.

pub fn is_empty(&self) -> bool

pub fn hash_for_opid(&self, opid: &ExId) -> Option<ChangeHash>

Get the hash of the change that contains the given opid.

Returns None if the opid:

  • Is the root object id
  • Does not exist in this document
  • Is for an operation in a transaction

Trait Implementations§

§

impl Deref for Edits<'_>

§

type Target = AutoCommit

The resulting type after dereferencing.
§

fn deref(&self) -> &<Edits<'_> as Deref>::Target

Dereferences the value.

Auto Trait Implementations§

§

impl<'a> Freeze for Edits<'a>

§

impl<'a> RefUnwindSafe for Edits<'a>

§

impl<'a> Send for Edits<'a>

§

impl<'a> Sync for Edits<'a>

§

impl<'a> Unpin for Edits<'a>

§

impl<'a> UnsafeUnpin for Edits<'a>

§

impl<'a> !UnwindSafe for Edits<'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
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

§

fn simd_from(_simd: S, value: T) -> T

§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

§

fn simd_into(self, simd: S) -> T

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

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> Fruit for T
where T: Send + Downcast,

§

impl<T> MaybeSendSync for T
where T: Send + Sync + ?Sized,

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T

§

impl<T> WasmNotSync for T
where T: Sync,