Struct VecListModel
pub struct VecListModel<T, K> { /* private fields */ }Expand description
Convenient fully-resident model. Database and paged sources generally
implement ListModel directly instead.
Implementations§
§impl<T, K> VecListModel<T, K>
impl<T, K> VecListModel<T, K>
pub fn new(
items: Vec<T>,
key: impl FnMut(&T) -> K,
) -> Result<VecListModel<T, K>, DuplicateListKey>
pub fn new( items: Vec<T>, key: impl FnMut(&T) -> K, ) -> Result<VecListModel<T, K>, DuplicateListKey>
pub fn item(&self, index: usize) -> Option<&T>
pub fn items(&self) -> &[T]
pub fn push(&mut self, key: K, item: T) -> Result<(), DuplicateListKey>
pub fn push(&mut self, key: K, item: T) -> Result<(), DuplicateListKey>
§Errors
Returns DuplicateListKey when key already exists.
pub fn remove(&mut self, index: usize) -> Option<T>
pub fn move_item(&mut self, from: usize, to: usize) -> bool
Trait Implementations§
§impl<T, K> ListModel for VecListModel<T, K>
impl<T, K> ListModel for VecListModel<T, K>
type Key = K
fn len(&self) -> usize
fn key_at(&self, index: usize) -> Option<<VecListModel<T, K> as ListModel>::Key>
fn index_of( &self, key: &<VecListModel<T, K> as ListModel>::Key, ) -> Option<usize>
fn is_empty(&self) -> bool
§fn row_state(&self, _index: usize) -> ListRowState<'_>
fn row_state(&self, _index: usize) -> ListRowState<'_>
Current state of a logical row. Paged models can keep stable keys and
geometry while their data moves through loading, ready, and error.
§fn request_range(&mut self, _range: Range<usize>)
fn request_range(&mut self, _range: Range<usize>)
Opportunity to enqueue work for the visible window plus overscan.
§fn poll_changed(&mut self) -> bool
fn poll_changed(&mut self) -> bool
Drain a model-owned invalidation wakeup. Return true after logical
order, count, key, or row-state changes. Use
VirtualList::invalidate_rows as well when ready delegate content
changed without changing state.§fn poll_changes(&mut self) -> Vec<ListModelChange<Self::Key>>
fn poll_changes(&mut self) -> Vec<ListModelChange<Self::Key>>
Drain specific model changes. Prefer this to
Self::poll_changed
when an asynchronous source can identify its batch: stable delegates
then survive structural changes and only named content rows rebuild.§fn needs_poll(&self) -> bool
fn needs_poll(&self) -> bool
Keep scheduling frames while
Self::poll_changed or
Self::poll_changes may observe an in-flight asynchronous source.Auto Trait Implementations§
impl<T, K> Freeze for VecListModel<T, K>
impl<T, K> RefUnwindSafe for VecListModel<T, K>where
T: RefUnwindSafe,
K: RefUnwindSafe,
impl<T, K> Send for VecListModel<T, K>
impl<T, K> Sync for VecListModel<T, K>
impl<T, K> Unpin for VecListModel<T, K>
impl<T, K> UnsafeUnpin for VecListModel<T, K>
impl<T, K> UnwindSafe for VecListModel<T, K>where
K: UnwindSafe,
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn 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>
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)
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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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