Crates.io | flex-grow |
lib.rs | flex-grow |
version | 0.1.0 |
source | src |
created_at | 2024-08-21 15:13:17.988059 |
updated_at | 2024-08-21 15:13:17.988059 |
description | allocate a size between children |
homepage | |
repository | https://github.com/Canop/flex-grow |
max_upload_size | |
id | 1346632 |
size | 12,189 |
Tiny utility computing the allocation of a size among "children".
Typical use case: decide what columns to show in an UI, and what size to give to each column.
Each child can have a min and max size, be optional with a priority, have a grow
factor.
Example:
use flex_grow::{Child, Container};
let container = Container::builder_in(50)
.with_margin_between(1)
.with(Child::new("name").clamp(5, 10))
.with(Child::new("price").with_size(8).optional_with_priority(7))
.with(Child::new("quantity").with_size(8).optional())
.with(Child::new("total").with_size(8))
.with(Child::new("comments").with_min(10).with_grow(2.0))
.with(Child::new("vendor").with_size(60).optional_with_priority(9))
.build()
.unwrap();
assert_eq!(container.sizes(), vec![7, 8, 8, 8, 15, 0]);
You can give any argument to Child::new
, it's stored in the child and returned by the content()
method.