File: README.md

package info (click to toggle)
rust-flex-grow 0.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 100 kB
  • sloc: makefile: 4
file content (42 lines) | stat: -rw-r--r-- 1,346 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[![MIT][s2]][l2] [![Latest Version][s1]][l1] [![docs][s3]][l3] [![Chat on Miaou][s4]][l4]

[s1]: https://img.shields.io/crates/v/flex-grow.svg
[l1]: https://crates.io/crates/flex-grow

[s2]: https://img.shields.io/badge/license-MIT-blue.svg
[l2]: LICENSE

[s3]: https://docs.rs/flex-grow/badge.svg
[l3]: https://docs.rs/flex-grow/

[s4]: https://miaou.dystroy.org/static/shields/room.svg
[l4]: https://miaou.dystroy.org/3


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.