[][src]Struct bs58::alphabet::Alphabet

pub struct Alphabet { /* fields omitted */ }

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]

pub const RIPPLE: &'static Self[src]

Ripple's alphabet as defined in their wiki.

See https://wiki.ripple.com/Encodings

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:

This example deliberately fails to compile
const _: &'static bs58::Alphabet = &bs58::Alphabet::new_unwrap(
    b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
);

Trait Implementations

impl Clone for Alphabet[src]

impl Copy for Alphabet[src]

impl Debug for Alphabet[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.