Barf
Turn any input into "barf"-ed output.
The name is a play on the purpose of this crate as a deparser - the opposite of the fantastic nom crate.
Barf aims to have some integrations with common datatypes such as LEB128 encoded variable-length integers.
When these integrations require another crate, they will be locked behind feature flags.
These integrations include
- LEB128 with the "leb128" feature flag using nano-leb128.
- vint64 with the "vint64" feature flag.
For a full list, see Cargo.toml.
If you want to see more integrations, please open an issue, or preferably a pull request.
There is also nothing stopping you from implementing [Barfer] on your own types and creating extension traits for them.
Barf can operate in no_std environments, but the "alloc" feature flag needs to be enabled for the default implementations of [Barfer] for [Vec] and [String].
use Barfer;
// Vec<T> implements Barfer<T>.
let mut buf: = Vecnew;
// Push 42_u8
buf.single;
// Push "test".bytes() iterator with `many`
buf.many;
// Push 1, 2, and 3
buf.slice;
assert_eq!;