Skip to main content

LayoutFn

Struct LayoutFn 

Source
pub struct LayoutFn(pub Arc<dyn Fn(LayoutCtx<'_>) -> Vec<Rect> + Send + Sync>);
Expand description

Second escape hatch: author-supplied layout function.

When set on a node via El::layout, the layout pass calls this function instead of running the column/row/overlay distribution for that node’s direct children. The function returns one Rect per child (in source order), positioned anywhere inside the container. The library still recurses into each child (so descendants lay out normally) and still drives hit-test, focus, animation, scroll — those all read from UiState’s computed-rect side map, which receives the rects this function produces.

Authors typically write a free fn(LayoutCtx) -> Vec<Rect> and pass it directly: column(children).layout(my_layout).

§What you get

  • LayoutCtx::container — the rect available for placement (parent rect minus this node’s padding).
  • LayoutCtx::children — read-only slice of the node’s children; index here matches the index in your returned Vec<Rect>.
  • LayoutCtx::measure — call to get a child’s intrinsic (width, height) if you need it for sizing decisions.

§Scope limits (will panic)

  • The custom-layout node itself must size with Size::Fixed or Size::Fill on both axes. Size::Hug would require a separate intrinsic callback and is not yet supported.
  • The returned Vec<Rect> length must equal children.len().

Tuple Fields§

§0: Arc<dyn Fn(LayoutCtx<'_>) -> Vec<Rect> + Send + Sync>

Implementations§

Source§

impl LayoutFn

Source

pub fn new<F>(f: F) -> Self
where F: Fn(LayoutCtx<'_>) -> Vec<Rect> + Send + Sync + 'static,

Trait Implementations§

Source§

impl Clone for LayoutFn

Source§

fn clone(&self) -> LayoutFn

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LayoutFn

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.