pub struct ProgressiveLayoutContext<'a> {
pub children: &'a [&'a dyn LayoutView],
pub entries: Vec<ProgressiveChild>,
pub spacing: f32,
pub alignment: Alignment,
pub distribution: Distribution,
pub bounds: Rect,
pub completed: usize,
pub fallback_applied: bool,
}Expand description
Opt-in wrapper that breaks a single layout pass into incremental batches.
§Contract
Saves partially computed layouts inside LayoutCache so the main UI thread does not stall for deep trees.
Fields§
§children: &'a [&'a dyn LayoutView]§entries: Vec<ProgressiveChild>§spacing: f32§alignment: Alignment§distribution: Distribution§bounds: Rect§completed: usize§fallback_applied: boolImplementations§
Source§impl<'a> ProgressiveLayoutContext<'a>
impl<'a> ProgressiveLayoutContext<'a>
Sourcepub fn new(
bounds: Rect,
subviews: &'a [&'a dyn LayoutView],
spacing: f32,
alignment: Alignment,
distribution: Distribution,
) -> Self
pub fn new( bounds: Rect, subviews: &'a [&'a dyn LayoutView], spacing: f32, alignment: Alignment, distribution: Distribution, ) -> Self
Create a new progressive layout context for the given subviews.
Sourcepub fn layout_next_batch(&mut self, batch_size: usize) -> bool
pub fn layout_next_batch(&mut self, batch_size: usize) -> bool
Layout up to batch_size additional children.
Sourcepub fn layout_next_batch_with_cache(
&mut self,
batch_size: usize,
cache: &mut LayoutCache,
) -> (bool, Vec<Rect>)
pub fn layout_next_batch_with_cache( &mut self, batch_size: usize, cache: &mut LayoutCache, ) -> (bool, Vec<Rect>)
Variant of layout_next_batch that integrates with a persistent cache.
Sourcepub fn is_complete(&self) -> bool
pub fn is_complete(&self) -> bool
Returns true when every child has been laid out or fallback has been applied.
Sourcepub fn apply_remaining_fallback(&mut self, cache: &mut LayoutCache) -> Vec<Rect>
pub fn apply_remaining_fallback(&mut self, cache: &mut LayoutCache) -> Vec<Rect>
Apply fallback positioning to all children that have not yet been laid out.
Sourcepub fn take_rects(self) -> Vec<Rect>
pub fn take_rects(self) -> Vec<Rect>
Consume the context and return the final Vec<Rect> for all children in order.
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for ProgressiveLayoutContext<'a>
impl<'a> !Send for ProgressiveLayoutContext<'a>
impl<'a> !Sync for ProgressiveLayoutContext<'a>
impl<'a> !UnwindSafe for ProgressiveLayoutContext<'a>
impl<'a> Freeze for ProgressiveLayoutContext<'a>
impl<'a> Unpin for ProgressiveLayoutContext<'a>
impl<'a> UnsafeUnpin for ProgressiveLayoutContext<'a>
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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.Source§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.Source§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.Source§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.