base256u 2.0.1

Simple mapping between bytes and Unicode codepoints
Documentation
# base256u

[![Documentation](https://img.shields.io/badge/Documentation-docs.rs-blue?style=flat&logo=rust)](https://docs.rs/base256u/latest/base256u/)

Just a simple Rust crate to map between bytes and unicode glyphs.  Includes
reference printable-ascii-preserved Unicode (papu) encoder and decoder
functions, as well as emoji ones.  The papu encoding will preserve all text
that is already only printable ascii characters and all the other bytes map to
single-codepoint non-combining printable glyphs, skipping odd things like `NBSP`
and `SHY`.

Creating your own custom encodings is trivial as well.

Using this crate is as simple as `use base256u::{Decode, Encode};` and then
calling the `base256u()` method or `base256u_papu()` to get the default papu
encoding.

## Encoding

```rust
use base256u::Encode as _;

let encoded: String = (u8::MIN..=u8::MAX).base256u_papu().collect();
assert_eq!(encoded, r##"°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~§ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇň¤ŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ"##);
let encoded: String = b"Pack my box with five dozen liquor jugs."
    .into_iter()
    .copied()
    .base256u_papu()
    .collect();
assert_eq!(encoded, "Pack my box with five dozen liquor jugs.");
```

## Decoding

```rust
use base256u::Decode as _;

let decoded: Vec<Result<u8, char>> = r##"°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~§ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇň¤ŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƝʼn"##.chars().base256u_papu().collect();
let mut matcher: Vec<Result<u8, char>> = (u8::MIN..=u8::MAX).map(Ok).collect();
matcher.push(Err('Ɲ'));
matcher.push(Err('ʼn'));
assert_eq!(decoded, matcher);
let decoded: Vec<u8> = "Pack my box with five dozen liquor jugs."
    .chars()
    .base256u_papu()
    .map(|c| c.unwrap())
    .collect();
assert_eq!(
    String::from_utf8(decoded).unwrap(),
    "Pack my box with five dozen liquor jugs."
);
```