Enum FileTreeMutation

Source
#[non_exhaustive]
pub enum FileTreeMutation { CreateDirectory { parent: FileTreeNodeId, uri: FileUri, }, CreateEntry { parent: FileTreeNodeId, node_id: FileTreeNodeId, uri: FileUri, kind: FileKind, }, Move { node_id: FileTreeNodeId, from: FileUri, to: FileUri, }, Remove { node_id: FileTreeNodeId, uri: FileUri, recursive: bool, }, }
Expand description

Provider mutation executed serially on the filesystem worker.

URIs are provider-neutral identifiers. recursive is forwarded without reinterpretation, and CreateEntry accepts any [FileKind] at the type level although the worker supports only file and directory creation.

§Examples

use ailloli_ui_fs::{FileKind, FileMetadata, FileTreeStore, FileUri};
use ailloli_ui_fs_runtime::FileTreeMutation;
let store = FileTreeStore::new(FileUri::parse("file:///")?, FileMetadata::new(FileKind::Directory))?;
let mutation = FileTreeMutation::Remove {
    node_id: store.root(),
    uri: FileUri::parse("file:///")?,
    recursive: true,
};
assert_eq!(mutation.target_node_id(), store.root());

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

CreateDirectory

Creates a directory and later inserts the attested result under parent.

Fields

§parent: FileTreeNodeId

Existing store node that receives the new child.

§uri: FileUri

Exact provider URI to create.

§

CreateEntry

Creates a file or directory with an identity reserved by the UI store.

Fields

§parent: FileTreeNodeId

Existing store node that receives the new child.

§node_id: FileTreeNodeId

Store-local ID reserved before enqueueing the operation.

§uri: FileUri

Exact provider URI to create.

§kind: FileKind

Entry kind; only [FileKind::File] and [FileKind::Directory] work.

§

Move

Moves an existing entry and preserves its store-local node ID.

Fields

§node_id: FileTreeNodeId

Existing store-local ID to update after provider attestation.

§from: FileUri

Exact current provider URI.

§to: FileUri

Exact destination provider URI.

§

Remove

Removes an existing entry after provider confirmation.

Fields

§node_id: FileTreeNodeId

Existing store-local ID to remove.

§uri: FileUri

Exact provider URI to remove.

§recursive: bool

Whether provider-defined recursive removal is permitted.

Implementations§

Source§

impl FileTreeMutation

Accessors for store ownership and optional reserved identity.

Source

pub const fn target_node_id(&self) -> FileTreeNodeId

Returns the node serialized against other active mutations.

Create operations target their parent; move/remove operations target the affected node.

§Examples
use ailloli_ui_fs::{FileKind, FileMetadata, FileTreeStore, FileUri};
use ailloli_ui_fs_runtime::FileTreeMutation;
let store = FileTreeStore::new(FileUri::parse("file:///")?, FileMetadata::new(FileKind::Directory))?;
let mutation = FileTreeMutation::CreateDirectory { parent: store.root(), uri: FileUri::parse("file:///new")? };
assert_eq!(mutation.target_node_id(), store.root());
Source

pub const fn reserved_node_id(&self) -> Option<FileTreeNodeId>

Returns the preallocated ID only for FileTreeMutation::CreateEntry.

§Examples
use ailloli_ui_fs::{FileKind, FileMetadata, FileTreeStore, FileUri};
use ailloli_ui_fs_runtime::FileTreeMutation;
let mut store = FileTreeStore::new(FileUri::parse("file:///")?, FileMetadata::new(FileKind::Directory))?;
let reserved = store.reserve_node_id()?;
let mutation = FileTreeMutation::CreateEntry { parent: store.root(), node_id: reserved, uri: FileUri::parse("file:///new.txt")?, kind: FileKind::File };
assert_eq!(mutation.reserved_node_id(), Some(reserved));

Trait Implementations§

Source§

impl Clone for FileTreeMutation

Source§

fn clone(&self) -> FileTreeMutation

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for FileTreeMutation

Source§

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

Formats the value using the given formatter. Read more
Source§

impl PartialEq for FileTreeMutation

Source§

fn eq(&self, other: &FileTreeMutation) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for FileTreeMutation

Source§

impl StructuralPartialEq for FileTreeMutation

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
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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn into(self) -> U

Calls U::from(self).

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

§

impl<A> IntoClickAction<A> for A
where A: Clone + 'static,

§

fn into_click_action(self) -> ClickAction<A>

Implements the into_click_action helper used by this module.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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> ErasedDestructor for T
where T: 'static,

§

impl<T> Props for T
where T: Clone + 'static,