rb64/
lib.rs

1//! Base 64
2//!
3//! This crate contains functions to encode and decode Base 64
4//!
5//! # Example
6//! ```
7//! use rb64::{encode, decode};
8//!
9//! let s = encode(b"Hello world!");
10//! assert_eq!(s, "SGVsbG8gd29ybGQh");
11//! let decoded = decode(&s).unwrap();
12//! assert_eq!(&*decoded, b"Hello world!");
13//! ```
14
15#![cfg_attr(not(feature = "std"), no_std)]
16
17#[macro_use]
18extern crate alloc;
19
20mod prelude {
21    pub use alloc::{borrow::Cow, boxed::Box, string::String, vec::Vec};
22}
23use prelude::*;
24
25#[macro_export]
26#[cfg(debug_assertions)]
27macro_rules! unreachable {
28    ( $($e:expr)? ) => {
29        core::unreachable!($($e)?)
30    };
31}
32
33#[macro_export]
34#[cfg(not(debug_assertions))]
35macro_rules! unreachable {
36    ( $($e:expr)? ) => {
37        unsafe { core::hint::unreachable_unchecked() }
38    };
39}
40
41mod decode;
42pub use decode::decode;
43#[cfg(feature = "std")]
44pub use encode::Base64Encoder;
45
46mod encode;
47pub use encode::encode;
48
49#[cfg(feature = "bindings")]
50mod bindings;
51
52pub type Result<T> = core::result::Result<T, Cow<'static, str>>;