Build an array dynamically without heap allocations, deferring errors to a
single `build` callsite.
```rust
let arr: [u8; 3] = ArrayBuilder::new()
.push(1)
.push(2)
.push(3)
.build_exact()
.unwrap();
assert_eq!(arr, [1, 2, 3]);
```
You can choose how to handle the wrong number of [`push`](ArrayBuilder::push)
calls:
- [`build_exact`](ArrayBuilder::build_exact).
- [`build_pad`](ArrayBuilder::build_pad).
- [`build_truncate`](ArrayBuilder::build_truncate).
- [`build_pad_truncate`](ArrayBuilder::build_pad_truncate).
# Comparison with other libraries
- [`arrayvec`] requires you to handle over-provision at each call to [`try_push`](arrayvec::ArrayVec::try_push).
- [`array_builder`](https://docs.rs/array_builder/latest/array_builder/) will
[`panic!`] on over-provision.