Struct bs58::Alphabet [−][src]
Prepared Alphabet for
EncodeBuilder::with_alphabet
and
DecodeBuilder::with_alphabet
.
Implementations
impl Alphabet
[src]
pub const BITCOIN: &'static Self
[src]
Bitcoin’s alphabet as defined in their Base58Check encoding.
See https://en.bitcoin.it/wiki/Base58Check_encoding#Base58_symbol_chart
pub const MONERO: &'static Self
[src]
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
pub const RIPPLE: &'static Self
[src]
Ripple’s alphabet as defined in their wiki.
pub const FLICKR: &'static Self
[src]
Flickr’s alphabet for creating short urls from photo ids.
See https://www.flickr.com/groups/api/discuss/72157616713786392/
pub const DEFAULT: &'static Self
[src]
The default alphabet used if none is given. Currently is the
BITCOIN
alphabet.
pub const fn new(base: &[u8; 58]) -> Result<Self, Error>
[src]
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());
pub const fn new_unwrap(base: &[u8; 58]) -> Self
[src]
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
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,