Struct bs58::Alphabet

source ·
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
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.