Skip to main content

PersonRecords

Struct PersonRecords 

pub struct PersonRecords { /* private fields */ }
Expand description

Where one app keeps the person’s records on this device. Cloning shares the open records.

Implementations§

§

impl PersonRecords

pub fn open( owners: &mut RecordOwners, package_id: &str, author: UserId, ) -> Result<PersonRecords, RecordOpenError>

package_id’s records of the person author, kept in owners.

§Errors

Rejects an invalid package.

pub fn replica( package_id: &str, author: UserId, ) -> Result<PersonRecords, RecordOpenError>

Records that store nothing on this device, for a window whose app already holds the stored ones elsewhere (the same app open in another window): they converge with that window over the record’s route.

§Errors

Rejects an invalid package.

pub fn of_package( &self, package_id: &str, ) -> Result<PersonRecords, RecordOpenError>

The person’s records package_id keeps, held in this app’s store beside its own. In one host, these use the original profile-scoped owner registry; another mounted app never opens a second writer or empty fallback replica for the same record. Separate hosts/devices converge over the record’s route, which a record of the person’s own scope names in their own cluster. Sharing an owner adds no editor permission; the framework enforces the resource’s editor list.

§Errors

Rejects an invalid package.

pub fn in_workspace( &self, workspace: &str, ) -> Result<PersonRecords, RecordOpenError>

The app’s own records of a kind in the workspace workspace, kept where these are: one per kind and member (RecordId::of_member), the same on each of the author’s devices, synced on the ordinary route of a record of the app in that workspace and read or changed by the author’s devices alone. They are kept apart from the store of the record the app shows, so an edit of one while that one is being changed waits for nothing. An author without a root identity is a member of no workspace: theirs stay on this device.

§Errors

Rejects an invalid workspace.

pub fn sharing(self, others: &PersonRecords) -> PersonRecords

These records, with the person’s records of other apps (Self::of_package) opened where others keeps them: the host holds those itself and lends them to every app it shows in its process, so the process has one copy of each.

pub fn shared_by_host(&self) -> bool

Whether a host keeps the person’s shared records and lends them to these (Self::sharing): those this app owns are then the host’s too, so the process has one writer of each.

pub fn flush(&self) -> Result<(), String>

Write out what is not stored yet, as closing the window does.

The records are the store’s once written: a store whose host commits in its own time (the page’s, through IndexedDB) says “not yet” for every write it took, which is not a record that could not be stored.

§Errors

The records’ writer reports a storage failure.

pub fn author(&self) -> &UserId

pub fn open_record( &self, kind: RecordKind, initialize: &dyn Fn(&mut AutoCommit) -> Result<(), String>, ) -> Result<StoredRecord, RecordOpenError>

Open the person’s record of kind, created with initialize — its genesis, the same change on every device — when nothing holds it yet. When another window of the app keeps it, this window opens a replica that stores nothing and follows that window’s.

§Errors

The record could not be read, created or replicated.

pub fn open_existing_record( &self, kind: RecordKind, ) -> Result<Option<StoredRecord>, RecordOpenError>

The person’s record of kind when it exists, without creating it: what a reader opens, leaving creation to the first write (Self::open_record).

§Errors

The record could not be read or replicated.

pub fn open_original_record( &self, kind: RecordKind, initialize: impl Fn(&mut AutoCommit) -> Result<(), String>, ) -> Result<StoredRecord, RecordOpenError>

Open the original writer for a host-owned canonical edit. Unlike the readable replica path, this must observe and edit the actual owner: a busy/missing writer is never replaced by an empty local replica.

Trait Implementations§

§

impl Clone for PersonRecords

§

fn clone(&self) -> PersonRecords

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

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

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

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

§

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

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

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

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

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

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

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

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

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

§

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

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

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

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

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

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

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

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

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

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

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

§

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

§

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

§

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

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T

§

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

§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

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