Skip to main content

Automorph

Trait Automorph 

Source
pub trait Automorph: Sized {
    type Changes: ChangeReport;
    type Cursor: FieldCursor;

    // Required methods
    fn save<D: Transactable + ReadDoc>(
        &self,
        doc: &mut D,
        obj: impl AsRef<ObjId>,
        prop: impl Into<Prop>,
    ) -> Result<()>;
    fn load_at<D: ReadDoc>(
        doc: &D,
        obj: impl AsRef<ObjId>,
        prop: impl Into<Prop>,
        heads: &[ChangeHash],
    ) -> Result<Self>;
    fn diff_at<D: ReadDoc>(
        &self,
        doc: &D,
        obj: impl AsRef<ObjId>,
        prop: impl Into<Prop>,
        heads: &[ChangeHash],
    ) -> Result<Self::Changes>;
    fn load<D: ReadDoc>(
        doc: &D,
        obj: impl AsRef<ObjId>,
        prop: impl Into<Prop>,
    ) -> Result<Self>;
    fn update<D: ReadDoc>(
        &mut self,
        doc: &D,
        obj: impl AsRef<ObjId>,
        prop: impl Into<Prop>,
    ) -> Result<Self::Changes>;
    fn update_at<D: ReadDoc>(
        &mut self,
        doc: &D,
        obj: impl AsRef<ObjId>,
        prop: impl Into<Prop>,
        heads: &[ChangeHash],
    ) -> Result<Self::Changes>;
    fn diff<D: ReadDoc>(
        &self,
        doc: &D,
        obj: impl AsRef<ObjId>,
        prop: impl Into<Prop>,
    ) -> Result<Self::Changes>;

    // Provided methods
    fn diff_versions<D: ReadDoc>(
        doc: &D,
        obj: impl AsRef<ObjId>,
        prop: impl Into<Prop>,
        from_heads: &[ChangeHash],
        to_heads: &[ChangeHash],
    ) -> Result<Self::Changes> { ... }
    fn tracked<D: ReadDoc>(
        doc: &D,
        obj: impl AsRef<ObjId>,
        prop: impl Into<Prop>,
    ) -> Result<Tracked<Self>> { ... }
    fn tracked_at<D: ReadDoc>(
        doc: &D,
        obj: impl AsRef<ObjId>,
        prop: impl Into<Prop>,
        heads: &[ChangeHash],
    ) -> Result<Tracked<Self>> { ... }
}
Expand description

Primary trait for bidirectional synchronization with Automerge documents.

This trait enables Rust types to synchronize their state with Automerge documents. It provides:

  • Core operations: Write to (save) and read from (load) Automerge documents
  • In-place updates: Update existing instances via update
  • Change tracking: Know which fields changed via diff
  • Version-aware operations: Work with historical document states via *_at methods
  • Efficient tracking: O(1) change detection via Tracked<T> wrapper

§Derive Macro

The easiest way to implement this trait is using the derive macro:

use automorph::Automorph;

#[derive(Automorph, Default, Clone)]
struct Person {
    name: String,
    age: u64,
}

§Associated Types

  • Changes: Hierarchical change report for deep inspection
  • Cursor: Cached ObjIds for O(1) change detection

§Example

use automorph::{Automorph, Result};
use automerge::{AutoCommit, ROOT};

fn example() -> Result<()> {
    let mut doc = AutoCommit::new();

    // Write to document
    let value = "hello".to_string();
    value.save(&mut doc, &ROOT, "greeting")?;

    // Read from document
    let restored = String::load(&doc, &ROOT, "greeting")?;
    assert_eq!(restored, "hello");

    // Read from specific version
    let heads = doc.get_heads();
    let at_version = String::load_at(&doc, &ROOT, "greeting", &heads)?;
    Ok(())
}

Required Associated Types§

Source

type Changes: ChangeReport

Hierarchical change report type for deep change inspection.

For primitive types, this is PrimitiveChanged. For structs, this is a generated *Changes struct that mirrors the field hierarchy, enabling inspection like: changes.name (bool for primitives) or changes.address (Option<AddressChanges>).

Source

type Cursor: FieldCursor

Cursor type for O(1) change detection via cached ObjIds.

Used internally by Tracked<T> to enable efficient change detection without deserializing the entire document.

Required Methods§

Source

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Synchronizes this value to an Automerge document.

This method writes the current state of self to the specified location in the Automerge document. It uses efficient diffing to only write values that have actually changed.

§Arguments
  • doc - The Automerge document to write to
  • obj - The parent object ID (use ROOT for the document root)
  • prop - The property name or index to write to
§Errors

Returns an error if the Automerge document operation fails.

Source

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Creates a new instance from a specific version of an Automerge document.

This is the core loading method. All other loading methods delegate to this.

§Arguments
  • doc - The Automerge document to read from
  • obj - The parent object ID (use ROOT for the document root)
  • prop - The property name or index to read from
  • heads - The change hashes representing the document version
§Errors

Returns an error if the value doesn’t exist or has an incompatible type.

Source

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Compares this value against a specific document version.

Returns a ChangeReport describing which fields differ.

§Implementation Notes

For optimal performance, implementations should compare field-by-field without allocating a new struct. However, for types where this isn’t practical (like enums where the variant must be determined first), calling load_at() and comparing is acceptable.

§Arguments
  • doc - The Automerge document to compare against
  • obj - The parent object ID
  • prop - The property name or index
  • heads - The change hashes representing the document version
Source

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Creates a new instance from the current document state.

§Arguments
  • doc - The Automerge document to read from
  • obj - The parent object ID (use ROOT for the document root)
  • prop - The property name or index to read from
§Errors

Returns an error if the value doesn’t exist or has an incompatible type.

§Note

This method uses doc.get() to read current state. For reading historical versions, use load_at() instead.

Source

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Updates this value in place from the current document state.

Returns a ChangeReport describing which fields were modified.

§Implementation Notes

For optimal performance, implementations should walk each field individually and only update fields that changed. However, for types where this isn’t practical (like enums or primitives), calling load() and replacing the value is acceptable.

§Arguments
  • doc - The Automerge document to read from
  • obj - The parent object ID
  • prop - The property name or index
§Errors

Returns an error if the value doesn’t exist or has an incompatible type.

Source

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Updates this value in place from a specific document version.

Returns a ChangeReport describing which fields were modified.

§Implementation Notes

For optimal performance, implementations should walk each field individually and only update fields that changed. However, for types where this isn’t practical (like enums or primitives), calling load_at() and replacing the value is acceptable.

§Arguments
  • doc - The Automerge document to read from
  • obj - The parent object ID
  • prop - The property name or index
  • heads - The change hashes representing the document version
§Errors

Returns an error if the value doesn’t exist or has an incompatible type.

Source

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Compares this value against the current document state.

Returns a ChangeReport describing which fields differ.

§Implementation Notes

For optimal performance, implementations should compare field-by-field without allocating a new struct. However, for types where this isn’t practical (like enums where the variant must be determined first), calling load() and comparing is acceptable.

Provided Methods§

Source

fn diff_versions<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, from_heads: &[ChangeHash], to_heads: &[ChangeHash], ) -> Result<Self::Changes>

Compares two document versions to find which fields changed.

This is a static method that doesn’t require an existing Rust value. Useful for understanding what changed between two points in time.

Source

fn tracked<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Tracked<Self>>

Loads a value from the document wrapped in a Tracked<T> for O(1) change detection.

Tracked<T> caches the ObjIds for each field, enabling efficient change detection without deserializing and comparing values.

Source

fn tracked_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Tracked<Self>>

Loads a value from a specific document version wrapped in Tracked<T>.

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 Automorph for IpAddr

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for SocketAddr

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for Value

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for bool

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for char

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for f32

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for f64

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for i8

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for i16

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for i32

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for i64

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for i128

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for isize

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for u8

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for u16

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for u32

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for u64

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for u128

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for ()

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for usize

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for Box<str>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for Box<[u8]>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for Rc<str>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for String

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for Arc<str>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for Ipv4Addr

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for Ipv6Addr

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for SocketAddrV4

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for SocketAddrV6

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for Duration

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for OsString

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for PathBuf

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for SystemTime

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for Map<String, Value>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for Number

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for NonZeroI8

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for NonZeroI16

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for NonZeroI32

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for NonZeroI64

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for NonZeroI128

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for NonZeroIsize

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for NonZeroU8

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for NonZeroU16

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for NonZeroU32

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for NonZeroU64

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for NonZeroU128

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl Automorph for NonZeroUsize

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<'a> Automorph for Cow<'a, str>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<K, V> Automorph for BTreeMap<K, V>
where K: ToString + FromStr + Ord + Clone, V: Automorph,

Source§

type Changes = MapChanges<String, <V as Automorph>::Changes>

Source§

type Cursor = MapCursor<<V as Automorph>::Cursor>

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<K, V> Automorph for HashMap<K, V>
where K: ToString + FromStr + Eq + Hash + Clone, V: Automorph,

Source§

type Changes = MapChanges<String, <V as Automorph>::Changes>

Source§

type Cursor = MapCursor<<V as Automorph>::Cursor>

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<O: Automorph, E: Automorph> Automorph for Result<O, E>

Source§

type Changes = ResultChanges<<O as Automorph>::Changes, <E as Automorph>::Changes>

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<S: Automorph + Eq + Hash> Automorph for HashSet<S>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<S: Automorph + Ord> Automorph for BTreeSet<S>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<S: Automorph> Automorph for Option<S>

Source§

type Changes = OptionChanges<<S as Automorph>::Changes>

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<S: Automorph> Automorph for LinkedList<S>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<S: Automorph> Automorph for VecDeque<S>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<S: Automorph> Automorph for Vec<S>

Source§

type Changes = VecChanges<<S as Automorph>::Changes>

Source§

type Cursor = VecCursor<<S as Automorph>::Cursor>

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph> Automorph for (T0,)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph> Automorph for (T0, T1)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph> Automorph for (T0, T1, T2)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph, T3: Automorph> Automorph for (T0, T1, T2, T3)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph, T3: Automorph, T4: Automorph> Automorph for (T0, T1, T2, T3, T4)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph, T3: Automorph, T4: Automorph, T5: Automorph> Automorph for (T0, T1, T2, T3, T4, T5)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph, T3: Automorph, T4: Automorph, T5: Automorph, T6: Automorph> Automorph for (T0, T1, T2, T3, T4, T5, T6)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph, T3: Automorph, T4: Automorph, T5: Automorph, T6: Automorph, T7: Automorph> Automorph for (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph, T3: Automorph, T4: Automorph, T5: Automorph, T6: Automorph, T7: Automorph, T8: Automorph> Automorph for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph, T3: Automorph, T4: Automorph, T5: Automorph, T6: Automorph, T7: Automorph, T8: Automorph, T9: Automorph> Automorph for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph, T3: Automorph, T4: Automorph, T5: Automorph, T6: Automorph, T7: Automorph, T8: Automorph, T9: Automorph, T10: Automorph> Automorph for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph, T3: Automorph, T4: Automorph, T5: Automorph, T6: Automorph, T7: Automorph, T8: Automorph, T9: Automorph, T10: Automorph, T11: Automorph> Automorph for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph, T3: Automorph, T4: Automorph, T5: Automorph, T6: Automorph, T7: Automorph, T8: Automorph, T9: Automorph, T10: Automorph, T11: Automorph, T12: Automorph> Automorph for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph, T3: Automorph, T4: Automorph, T5: Automorph, T6: Automorph, T7: Automorph, T8: Automorph, T9: Automorph, T10: Automorph, T11: Automorph, T12: Automorph, T13: Automorph> Automorph for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph, T3: Automorph, T4: Automorph, T5: Automorph, T6: Automorph, T7: Automorph, T8: Automorph, T9: Automorph, T10: Automorph, T11: Automorph, T12: Automorph, T13: Automorph, T14: Automorph> Automorph for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T0: Automorph, T1: Automorph, T2: Automorph, T3: Automorph, T4: Automorph, T5: Automorph, T6: Automorph, T7: Automorph, T8: Automorph, T9: Automorph, T10: Automorph, T11: Automorph, T12: Automorph, T13: Automorph, T14: Automorph, T15: Automorph> Automorph for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<Doc: Transactable + ReadDoc>( &self, doc: &mut Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<Doc: ReadDoc>( doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<Doc: ReadDoc>( &self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<Doc: ReadDoc>( &mut self, doc: &Doc, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T> Automorph for PhantomData<T>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph + Clone + PartialEq> Automorph for RangeInclusive<T>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph + PartialEq> Automorph for Rc<T>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph + PartialEq> Automorph for Arc<T>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph + Copy> Automorph for Cell<T>

Source§

type Changes = <T as Automorph>::Changes

Source§

type Cursor = <T as Automorph>::Cursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph> Automorph for Box<T>

Source§

type Changes = <T as Automorph>::Changes

Source§

type Cursor = <T as Automorph>::Cursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph> Automorph for RefCell<T>

Source§

type Changes = <T as Automorph>::Changes

Source§

type Cursor = <T as Automorph>::Cursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph> Automorph for Saturating<T>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph> Automorph for Wrapping<T>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph> Automorph for Range<T>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph> Automorph for RangeFrom<T>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph> Automorph for RangeTo<T>

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph> Automorph for Mutex<T>

Source§

type Changes = <T as Automorph>::Changes

Source§

type Cursor = <T as Automorph>::Cursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph> Automorph for RwLock<T>

Source§

type Changes = <T as Automorph>::Changes

Source§

type Cursor = <T as Automorph>::Cursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

impl<T: Automorph, const N: usize> Automorph for [T; N]

Source§

type Changes = PrimitiveChanged

Source§

type Cursor = ScalarCursor

Source§

fn save<D: Transactable + ReadDoc>( &self, doc: &mut D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<()>

Source§

fn load<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self>

Source§

fn load_at<D: ReadDoc>( doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self>

Source§

fn diff<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn diff_at<D: ReadDoc>( &self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Source§

fn update<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, ) -> Result<Self::Changes>

Source§

fn update_at<D: ReadDoc>( &mut self, doc: &D, obj: impl AsRef<ObjId>, prop: impl Into<Prop>, heads: &[ChangeHash], ) -> Result<Self::Changes>

Implementors§