ui_layout 0.3.0

A minimal Flexbox-inspired layout engine for Rust GUI
Documentation

ui_layout

Crates.io Docs.rs

A minimal Flexbox-inspired layout engine for Rust GUI development.

This crate provides a small, predictable layout system designed for custom GUI frameworks, editors, and experimental UI engines.

Features

  • Flex layout (Row / Column)
  • flex_grow and flex_basis
  • Fixed size and flexible size mixing
  • Min / max size constraints
  • Margin and padding (CSS-like spacing)
  • Block layout
  • Recursive tree-based layout
  • Parent-relative positioning
  • Row and column gaps (row_gap / column_gap)
  • Justify content (justify_content) and align items (align_items)

Non-goals

  • Full CSS compatibility
  • Inline or text layout
  • Absolute / fixed positioning
  • Web rendering or HTML/CSS parsing

Design goals

  • Simple and explicit layout rules
  • Easy to reason about and debug
  • Suitable for custom renderers (wgpu, skia, etc.)
  • No dependency on web standards or DOM

Example

use layout::*;

LayoutEngine::layout(&mut root, 800.0, 600.0);

For more examples and to understand the behavior of gaps, alignment, and sizing, see the unit tests in the tests/ directory. They provide practical usage patterns and expected layouts.

Status

See CHANGELOG.md for a detailed list of changes.

  • Version: 0.3.0
  • API is evolving but now includes full Flexbox-like alignment and gaps

Future versions may add:

  • grid
  • Additional flex sizing rules (wrap, fr units, etc.)
  • Absolute / fixed positioning

License

MIT