pub struct Alphabet { /* private fields */ }
Expand description

Implementations

Bitcoin’s alphabet as defined in their Base58Check encoding.

See https://en.bitcoin.it/wiki/Base58Check_encoding#Base58_symbol_chart

Ripple’s alphabet as defined in their wiki.

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

Flickr’s alphabet for creating short urls from photo ids.

See https://www.flickr.com/groups/api/discuss/72157616713786392/

The default alphabet used if none is given. Currently is the BITCOIN alphabet.

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());

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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.