pub struct DecodeBuilder<'a, I: AsRef<[u8]>> { /* private fields */ }
Expand description
A builder for setting up the alphabet and output of a base58 decode.
See the documentation for bs58::decode
for a more
high level view of how to use this.
Implementations§
Source§impl<'a, I: AsRef<[u8]>> DecodeBuilder<'a, I>
impl<'a, I: AsRef<[u8]>> DecodeBuilder<'a, I>
Sourcepub const fn new(input: I, alpha: &'a Alphabet) -> DecodeBuilder<'a, I>
pub const fn new(input: I, alpha: &'a Alphabet) -> DecodeBuilder<'a, I>
Setup decoder for the given string using the given alphabet.
Preferably use bs58::decode
instead of this directly.
Sourcepub const fn with_alphabet(self, alpha: &'a Alphabet) -> DecodeBuilder<'a, I>
pub const fn with_alphabet(self, alpha: &'a Alphabet) -> DecodeBuilder<'a, I>
Change the alphabet that will be used for decoding.
§Examples
assert_eq!(
vec![0x60, 0x65, 0xe7, 0x9b, 0xba, 0x2f, 0x78],
bs58::decode("he11owor1d")
.with_alphabet(bs58::Alphabet::RIPPLE)
.into_vec()?);
Sourcepub fn with_check(self, expected_ver: Option<u8>) -> DecodeBuilder<'a, I>
Available on crate feature check
only.
pub fn with_check(self, expected_ver: Option<u8>) -> DecodeBuilder<'a, I>
check
only.Expect and check checksum using the Base58Check algorithm when decoding.
Optional parameter for version byte. If provided, the version byte will be used in verification.
§Examples
assert_eq!(
vec![0x2d, 0x31],
bs58::decode("PWEu9GGN")
.with_check(None)
.into_vec()?);
Sourcepub fn as_cb58(self, expected_ver: Option<u8>) -> DecodeBuilder<'a, I>
Available on crate feature cb58
only.
pub fn as_cb58(self, expected_ver: Option<u8>) -> DecodeBuilder<'a, I>
cb58
only.Sourcepub fn into_vec(self) -> Result<Vec<u8>>
Available on crate feature alloc
only.
pub fn into_vec(self) -> Result<Vec<u8>>
alloc
only.Decode into a new vector of bytes.
See the documentation for bs58::decode
for an
explanation of the errors that may occur.
§Examples
assert_eq!(
vec![0x04, 0x30, 0x5e, 0x2b, 0x24, 0x73, 0xf0, 0x58],
bs58::decode("he11owor1d").into_vec()?);
Sourcepub fn onto(self, output: impl DecodeTarget) -> Result<usize>
pub fn onto(self, output: impl DecodeTarget) -> Result<usize>
Decode into the given buffer.
Returns the length written into the buffer.
If the buffer is resizeable it will be extended and the new data will be written to the end of it.
If the buffer is not resizeable bytes will be written from the beginning and bytes after the final encoded byte will not be touched.
See the documentation for bs58::decode
for an
explanation of the errors that may occur.
§Examples
§Vec<u8>
let mut output = b"hello ".to_vec();
assert_eq!(5, bs58::decode("EUYUqQf").onto(&mut output)?);
assert_eq!(b"hello world", output.as_slice());
§&mut [u8]
let mut output = b"hello ".to_owned();
assert_eq!(5, bs58::decode("EUYUqQf").onto(&mut output)?);
assert_eq!(b"world ", output.as_ref());
Source§impl<'a, 'b> DecodeBuilder<'a, &'b [u8]>
For const
compatibility we are restricted to using a concrete input and output type, as
const
trait implementations and &mut
are unstable. These methods will eventually be
deprecated once the primary interfaces can be converted into const fn
directly.
impl<'a, 'b> DecodeBuilder<'a, &'b [u8]>
For const
compatibility we are restricted to using a concrete input and output type, as
const
trait implementations and &mut
are unstable. These methods will eventually be
deprecated once the primary interfaces can be converted into const fn
directly.
Sourcepub const fn into_array_const<const N: usize>(self) -> Result<[u8; N]>
pub const fn into_array_const<const N: usize>(self) -> Result<[u8; N]>
Decode into a new array.
Returns the decoded array as bytes.
See the documentation for bs58::decode
for an explanation of the errors that may occur.
§Examples
const _: () = {
let Ok(output) = bs58::decode(b"EUYUqQf".as_slice()).into_array_const::<5>() else {
panic!()
};
assert!(matches!(&output, b"world"));
};
Sourcepub const fn into_array_const_unwrap<const N: usize>(self) -> [u8; N]
pub const fn into_array_const_unwrap<const N: usize>(self) -> [u8; N]
Self::into_array_const
but the result will be unwrapped, turning any error into a panic
message via Error::unwrap_const
, as a simple into_array_const().unwrap()
isn’t
possible yet.
§Examples
const _: () = {
let output: [u8; 5] = bs58::decode(b"EUYUqQf".as_slice()).into_array_const_unwrap();
assert!(matches!(&output, b"world"));
};
const _: () = {
assert!(matches!(
bs58::decode(b"he11owor1d".as_slice())
.with_alphabet(bs58::Alphabet::RIPPLE)
.into_array_const_unwrap(),
[0x60, 0x65, 0xe7, 0x9b, 0xba, 0x2f, 0x78],
));
};