Skip to main content

StateRegistry

Struct StateRegistry 

Source
pub struct StateRegistry { /* private fields */ }
Expand description

Central registry for widget state persistence.

The registry maintains an in-memory cache of widget states and delegates to a StorageBackend for persistence. It provides the main API for save/restore operations.

§Thread Safety

The registry is Send + Sync and uses internal locking for thread-safe access.

§Example

use ftui_runtime::state_persistence::{StateRegistry, MemoryStorage};

// Create registry with memory storage
let registry = StateRegistry::new(Box::new(MemoryStorage::new()));

// Load state for a widget
if let Some(entry) = registry.get("ScrollView::main") {
    // Deserialize and restore...
}

// Save state
registry.set("ScrollView::main", 1, serialized_data);
registry.flush()?;

Implementations§

Source§

impl StateRegistry

Source

pub fn new(backend: Box<dyn StorageBackend>) -> Self

Create a new registry with the given storage backend.

Does not automatically load from storage; call load first.

Source

pub fn in_memory() -> Self

Create a registry with memory storage (ephemeral, for testing).

Source

pub fn load(&self) -> StorageResult<usize>

Load all state from the storage backend.

This replaces the in-memory cache with stored data. Safe to call multiple times; later calls refresh the cache.

Source

pub fn flush(&self) -> StorageResult<bool>

Flush dirty state to the storage backend.

Only writes if changes have been made since last flush. Returns Ok(true) if data was written, Ok(false) if no changes.

Source

pub fn get(&self, key: &str) -> Option<StoredEntry>

Get a stored state entry by canonical key.

Returns None if no state exists for the key.

Source

pub fn set(&self, key: impl Into<String>, version: u32, data: Vec<u8>)

Set a state entry.

Marks the registry as dirty; call flush to persist.

Source

pub fn remove(&self, key: &str) -> Option<StoredEntry>

Remove a state entry.

Returns the removed entry if it existed.

Source

pub fn clear(&self) -> StorageResult<()>

Clear all state from both cache and storage.

Source

pub fn len(&self) -> usize

Get the number of cached entries.

Source

pub fn is_empty(&self) -> bool

Check if the cache is empty.

Source

pub fn is_dirty(&self) -> bool

Check if there are unsaved changes.

Source

pub fn backend_name(&self) -> &str

Get the backend name for logging.

Source

pub fn is_available(&self) -> bool

Check if the storage backend is available.

Source

pub fn keys(&self) -> Vec<String>

Get all cached keys.

Source§

impl StateRegistry

Source

pub fn shared(self) -> Arc<Self>

Wrap in Arc for shared ownership.

Source§

impl StateRegistry

Source

pub fn stats(&self) -> RegistryStats

Get statistics about the registry.

Trait Implementations§

Source§

impl Debug for StateRegistry

Source§

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

Formats the value using the given formatter. 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
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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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