pub struct ListDriver {
pub row_height: RowHeight,
pub track_viewport: bool,
pub len: Box<dyn Fn() -> usize>,
pub token_at: Box<dyn Fn(usize) -> u64>,
pub build: Box<dyn Fn(usize, RNode) -> BuiltRow>,
pub reorder: Option<ListReorderDriver>,
pub delete: Option<ListDeleteDriver>,
pub swipe: Option<ListSwipeDriver>,
pub sections: Option<ListSectionsDriver>,
}Expand description
Supplied by the list() piece, type-erased over the item type. day-core invokes these to
answer the native data-source and to build/rebind rows.
Fields§
§row_height: RowHeight§track_viewport: bool§len: Box<dyn Fn() -> usize>Current row count (reads the piece’s snapshot; no tree access).
token_at: Box<dyn Fn(usize) -> u64>Stable identity token for row index (for native diffing).
build: Box<dyn Fn(usize, RNode) -> BuiltRow>Build row index into anchor. Uses BuildCx internally, so it must be called with no
with_tree borrow held. Returns the row’s scope + a rebind writer.
reorder: Option<ListReorderDriver>Drag-to-reorder half, present when the piece is .reorderable() (docs/list.md).
delete: Option<ListDeleteDriver>Swipe-to-delete half, present when the piece is .deletable() (docs/list.md).
swipe: Option<ListSwipeDriver>Swipe-ACTIONS half, present when the piece declared edge actions (docs/list.md).
sections: Option<ListSectionsDriver>Section headers, present when the piece declared .sections (docs/list.md
“Sections”). Every closure above still speaks item indices; day-core inserts the
header rows and translates item indices at the toolkit boundary.
Auto Trait Implementations§
impl !RefUnwindSafe for ListDriver
impl !Send for ListDriver
impl !Sync for ListDriver
impl !UnwindSafe for ListDriver
impl Freeze for ListDriver
impl Unpin for ListDriver
impl UnsafeUnpin for ListDriver
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
impl<T> ErasedDestructor for Twhere
T: 'static,
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> ⓘ
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> ⓘ
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