# musli-allocator
[](https://github.com/udoprog/musli)
[](https://crates.io/crates/musli-allocator)
[](https://docs.rs/musli-allocator)
[](https://github.com/udoprog/musli/actions?query=branch%3Amain)
Allocation support for [Müsli].
This crate contains two types of allocators:
* The [`System`] allocator, which uses the system allocation facilities.
Particularly [`std::alloc::System`].
* The [`Stack`] allocator, which can allocate buffers from a fixed-size
slice.
## Examples
```rust
use musli::{Allocator, Buf};
musli_allocator::with(|alloc| {
let mut a = alloc.alloc().expect("allocation a failed");
let mut b = alloc.alloc().expect("allocation b failed");
b.write(b"He11o");
a.write(b.as_slice());
assert_eq!(a.as_slice(), b"He11o");
assert_eq!(a.len(), 5);
a.write(b" W0rld");
assert_eq!(a.as_slice(), b"He11o W0rld");
assert_eq!(a.len(), 11);
let mut c = alloc.alloc().expect("allocation c failed");
c.write(b"!");
a.write(c.as_slice());
assert_eq!(a.as_slice(), b"He11o W0rld!");
assert_eq!(a.len(), 12);
});
```
[Müsli]:
[`std::alloc::System`]: https://doc.rust-lang.org/std/alloc/struct.System.html