Common use-cases

This library provides the following common encodings:

Typical usage looks like:

rust // allocating functions BASE64.encode(&input_to_encode) HEXLOWER.decode(&input_to_decode) // in-place functions BASE32.encode_mut(&input_to_encode, &mut encoded_output) BASE64_URL.decode_mut(&input_to_decode, &mut decoded_output)

See the [documentation] or the [changelog] for more details.

Custom use-cases

This library also provides the possibility to define custom little-endian ASCII base-conversion encodings for bases of size 2, 4, 8, 16, 32, and 64 (for which all above use-cases are simply instances). It supports:

The typical definition of a custom encoding looks like:

rust lazy_static! { static ref DNSCURVE: data_encoding::Encoding = { use data_encoding::{Specification, BitOrder}; let mut spec = Specification::new(); spec.symbols.push_str("0123456789bcdfghjklmnpqrstuvwxyz"); spec.translate.from.push_str("BCDFGHJKLMNPQRSTUVWXYZ"); spec.translate.to.push_str("bcdfghjklmnpqrstuvwxyz"); spec.bit_order = BitOrder::LeastSignificantFirst; spec.encoding().unwrap() }; }

See the [documentation] or the [changelog] for more details.

Performance

The performance of the encoding and decoding functions (for both common and custom encodings) are similar to existing implementations in C, Rust, and other high-performance languages (see how to run the benchmarks on [github]).

Swiss-knife binary

This crate is a library. If you are looking for the [binary] using this library, see the installation instructions on [github].