Expand description
ListDataSource — read-and-command interface for a flat collection behind a ListView /
TableView.
ListDataSource is the flat-list peer of
TreeDataSource: a positional read API plus the
capability protocol (identity, DnD validation, lazy loading). It is the
input every flat data view reads through. The built-in ListModel<T> and
SortFilterListModel<T> implement it; an external/huge source
(a paged database cursor, a 1M-row windowed feed) implements it directly and owns its
own paging behind row_state/request_window/fetch_more.
Not object-safe (associated types + generic with_item); ListView
consumes it generically via ListView::from_source and erases it into a
closure bundle. The DnD and lazy methods default to inert / fully-resident,
so a read-only in-memory source implements only len + with_item +
observe_changes.
§When to use
Prefer ListModel<T> when your data fits in memory and you want
automatic DataChange notifications with no extra work. Implement ListDataSource
directly when the source is external, huge, or requires lazy window-based loading —
the view calls request_window each build pass and fetch_more near the end.
// ListModel<T> implements ListDataSource — pass it directly to any flat view.
let model = ListModel::from_vec(vec!["alpha", "beta", "gamma"]);
// Access via the ListDataSource interface:
let _len = model.len();
let _first = model.with_item(0, |s| *s);
assert_eq!(_len, 3);
assert_eq!(_first, Some("alpha"));Traits§
- List
Data Source - A data source for a flat collection viewed by
ListView,TableView, andGridView.