pub struct ChainList<P: Chained, K, T> { /* private fields */ }Expand description
A chain’s items as a ListModel: every held part’s items, oldest
first, after a row standing for the earlier parts while there are any
(ChainRow::Earlier, pending while one is on its way, failed with
why when the workspace’s hosts have none of it). Showing that
row opens the part before (ChainPager::reached_top); a
VirtualList keeps the
row the reader looks at in place as items come in above it.
Implementations§
Trait Implementations§
Source§impl<P: Chained, K: Clone + Eq + Hash + 'static, T> ListModel for ChainList<P, K, T>
impl<P: Chained, K: Clone + Eq + Hash + 'static, T> ListModel for ChainList<P, K, T>
type Key = ChainRow<K>
fn len(&self) -> usize
fn key_at(&self, index: usize) -> Option<Self::Key>
fn index_of(&self, key: &Self::Key) -> Option<usize>
Source§fn row_state(&self, index: usize) -> Arrival<(), &str>
fn row_state(&self, index: usize) -> Arrival<(), &str>
Where a logical row’s data stands:
Arrival::Pending (saying where
it comes from), ready, or failed with the reason. A paged model keeps
stable keys and geometry while its rows arrive; the list reserves a
pending row’s slot and paints its placeholder there
(crate::widget::ArrivingRows), and builds the row’s delegate only
once it is ready.Source§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.
Source§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.Source§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 is_empty(&self) -> bool
§fn can_retry(&self, _index: usize) -> bool
fn can_retry(&self, _index: usize) -> bool
Whether row
index, failed, can be asked for again: its failure
then offers a retry, which calls Self::retry.§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.§fn label(&self, _index: usize) -> Option<String>
fn label(&self, _index: usize) -> Option<String>
The name a person reads row
index by, which typing its first
letters in the focused list moves to (crate::type_ahead). None
for a row without one, or a model that names no rows.§fn key_presenting(&self, _id: &str) -> Option<Self::Key>
fn key_presenting(&self, _id: &str) -> Option<Self::Key>
The key of the row showing the resource
id, when the model can say: a host that
renders rows as they show offers this (crate::component::RowSource).§fn group_at(&self, _index: usize) -> Option<RowGroup>
fn group_at(&self, _index: usize) -> Option<RowGroup>
What the row
index is grouped by, when the model groups its rows: the list draws the
heading over the first row of each group (RowGroup), a disclosure the keyboard
reaches like a row and assistive technology reads as one. None for a row in no group,
or a model that groups nothing.§fn tree_at(&self, _index: usize) -> Option<TreeRow<Self::Key>>
fn tree_at(&self, _index: usize) -> Option<TreeRow<Self::Key>>
What the row stands as in a tree (
VirtualList::with_tree): the row it is under, and
what the list shows of its subtasks. None for a row outside a tree, or a model that
holds none.§fn accepts_children(&self, _index: usize) -> bool
fn accepts_children(&self, _index: usize) -> bool
Whether the row
index takes other rows as its subtasks: a tree’s drag offers a drop
into it (DropPlacement::Inside), and the keyboard indents a row into it. false
for a leaf, or a model that holds no tree.§fn renames(&self, _index: usize) -> bool
fn renames(&self, _index: usize) -> bool
Whether the row
index can be renamed in place (VirtualList::on_rename): F2, a
double click and VirtualList::begin_rename open a field only over a row that does.§fn has_subtasks(&self, _index: usize) -> bool
fn has_subtasks(&self, _index: usize) -> bool
Whether the row
index has subtasks to disclose, whether or not any of them stands in
the list: a folder read when it opens shows the disclosure that reads it. false for
a leaf, or a model that holds no tree.§fn discloses(&self) -> bool
fn discloses(&self) -> bool
Whether the list heads or nests its rows, keeping a disclosure gutter left of its column.
§fn opens_in_place(&self, _index: usize) -> bool
fn opens_in_place(&self, _index: usize) -> bool
Whether the row
index opens into its item where it stands: the row carries the
item’s document under it, and choosing the row opens it there rather than anywhere
else. false for a row that opens elsewhere, or a model whose rows open nothing.Auto Trait Implementations§
impl<P, K, T> Freeze for ChainList<P, K, T>
impl<P, K, T> !RefUnwindSafe for ChainList<P, K, T>
impl<P, K, T> !Send for ChainList<P, K, T>
impl<P, K, T> !Sync for ChainList<P, K, T>
impl<P, K, T> Unpin for ChainList<P, K, T>
impl<P, K, T> UnsafeUnpin for ChainList<P, K, T>
impl<P, K, T> !UnwindSafe for ChainList<P, K, T>
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> 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>
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>
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)
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)
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.§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