pub struct Alphabet { /* private fields */ }
Expand description
Prepared Alphabet for
EncodeBuilder::with_alphabet
and
DecodeBuilder::with_alphabet
.
Implementations
sourceimpl Alphabet
impl Alphabet
sourcepub const BITCOIN: &'static Self
pub const BITCOIN: &'static Self
Bitcoin’s alphabet as defined in their Base58Check encoding.
See https://en.bitcoin.it/wiki/Base58Check_encoding#Base58_symbol_chart
sourcepub const MONERO: &'static Self
pub const MONERO: &'static Self
Monero’s alphabet as defined in this forum post.
See https://forum.getmonero.org/4/academic-and-technical/221/creating-a-standard-for-physical-coins
sourcepub const FLICKR: &'static Self
pub const FLICKR: &'static Self
Flickr’s alphabet for creating short urls from photo ids.
See https://www.flickr.com/groups/api/discuss/72157616713786392/
sourcepub const DEFAULT: &'static Self
pub const DEFAULT: &'static Self
The default alphabet used if none is given. Currently is the
BITCOIN
alphabet.
sourcepub const fn new(base: &[u8; 58]) -> Result<Self, Error>
pub const fn new(base: &[u8; 58]) -> Result<Self, Error>
Create prepared alphabet, checks that the alphabet is pure ASCII and that there are no duplicate characters, which would result in inconsistent encoding/decoding
let alpha = bs58::Alphabet::new(
b" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY"
)?;
let decoded = bs58::decode("he11owor1d")
.with_alphabet(bs58::Alphabet::RIPPLE)
.into_vec()?;
let encoded = bs58::encode(decoded)
.with_alphabet(&alpha)
.into_string();
assert_eq!("#ERRN)N RD", encoded);
Errors
Duplicate Character
let alpha = b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
assert_eq!(
bs58::alphabet::Error::DuplicateCharacter { character: 'a', first: 0, second: 1 },
bs58::Alphabet::new(alpha).unwrap_err());
Non-ASCII Character
let mut alpha = *b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
alpha[1] = 255;
assert_eq!(
bs58::alphabet::Error::NonAsciiCharacter { index: 1 },
bs58::Alphabet::new(&alpha).unwrap_err());
sourcepub const fn new_unwrap(base: &[u8; 58]) -> Self
pub const fn new_unwrap(base: &[u8; 58]) -> Self
Same as Self::new
, but gives a panic instead of an Err
on bad input.
Intended to support usage in const
context until Result::unwrap
is able to be called.
const ALPHA: &'static bs58::Alphabet = &bs58::Alphabet::new_unwrap(
b" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY"
);
let decoded = bs58::decode("he11owor1d")
.with_alphabet(bs58::Alphabet::RIPPLE)
.into_vec()?;
let encoded = bs58::encode(decoded)
.with_alphabet(ALPHA)
.into_string();
assert_eq!("#ERRN)N RD", encoded);
If your alphabet is inconsistent then this will fail to compile in a const
context:
const _: &'static bs58::Alphabet = &bs58::Alphabet::new_unwrap(
b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
);
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Alphabet
impl Send for Alphabet
impl Sync for Alphabet
impl Unpin for Alphabet
impl UnwindSafe for Alphabet
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more