Skip to main content

Bech32

Struct Bech32 

Source
pub struct Bech32 {
    pub scheme: Scheme,
    pub hrp: Hrp,
    pub data: Vec<u8>,
}
Expand description

Parsed Bech32 structure.

Use RawBech32 and bits::convert() instead to handle data encoding and decoding manually.

§Examples

Decode string as Bech32:

use pbech32::{Bech32, Scheme};

let s = "a1qypqxpq9mqr2hj"; // bech32m string
let got: Bech32 = s.parse()?; // parse string

assert_eq!(got.scheme, Scheme::Bech32m); // check scheme
assert_eq!(got.hrp.to_string(), "a"); // check hrp
assert_eq!(got.data, vec![1, 2, 3, 4, 5]); // check data

Encode Bech32 as string:

use pbech32::{Bech32, Scheme};

let exp = "a1qypqxpq9mqr2hj"; // expected result

// populate structure
let b = Bech32 {
  scheme: Scheme::Bech32m, // checksum scheme
  hrp: "a".parse()?, // human-readable part
  data: vec![1, 2, 3, 4, 5], // 8-bit data
};

let got = b.to_string(); // convert to string
assert_eq!(got, exp); // check result

Use Bech32::new() to parse a specific scheme:

use pbech32::{Bech32, Scheme};

// expected result
let exp = Bech32 {
  scheme: Scheme::Bech32m, // checksum scheme
  hrp: "a".parse()?, // human-readable part
  data: vec![1, 2, 3, 4, 5], // 8-bit data
};

let s = "a1qypqxpq9mqr2hj"; // bech32m string
let got = Bech32::new(s, Some(Scheme::Bech32m))?; // parse string
assert_eq!(got, exp); // check result

Fields§

§scheme: Scheme

Scheme

Affects checksum encoding.

§hrp: Hrp

Human-readable part

Human-readable prefix containing ASCII characters in the range 33..127.

§data: Vec<u8>

8-bit data

Implementations§

Source§

impl Bech32

Source

pub fn new(s: &str, scheme: Option<Scheme>) -> Result<Self, Err>

Parse string as Bech32 with given scheme.

The difference between this function and str::parse() is that this function allows you to limit parsing to a particular scheme.

Setting the scheme parameter to None enables scheme auto-detection and is equivalent to calling str::parse().

§Example

Decode string using Scheme::Bech32m:

use pbech32::{Bech32, Scheme};

// expected result
let exp = Bech32 {
  scheme: Scheme::Bech32m, // checksum scheme
  hrp: "a".parse()?, // human-readable part
  data: vec![1, 2, 3, 4, 5], // 8-bit data
};

let s = "a1qypqxpq9mqr2hj"; // bech32m string
let got = Bech32::new(s, Some(Scheme::Bech32m))?; // parse string
assert_eq!(got, exp); // check result

Decode string using Scheme::Bech32:

use pbech32::{Bech32, Scheme};

// expected result
let exp = Bech32 {
  scheme: Scheme::Bech32, // checksum scheme
  hrp: "a".parse()?, // human-readable part
  data: vec![1, 2, 3, 4, 5], // 8-bit data
};

let s = "a1qypqxpq9wunxjs"; // bech32m string
let got = Bech32::new(s, Some(Scheme::Bech32))?; // parse string
assert_eq!(got, exp); // check result

Decode string and auto-detect scheme (equivalent to calling str::parse()):

use pbech32::{Bech32, Scheme};

// expected result
let exp = Bech32 {
  scheme: Scheme::Bech32m, // checksum scheme
  hrp: "a".parse()?, // human-readable part
  data: vec![1, 2, 3, 4, 5], // 8-bit data
};

let s = "a1qypqxpq9mqr2hj"; // bech32m string
let got = Bech32::new(s, None)?; // parse string
assert_eq!(got, exp); // check result

Trait Implementations§

Source§

impl Clone for Bech32

Source§

fn clone(&self) -> Bech32

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Bech32

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Bech32

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl FromStr for Bech32

Source§

type Err = Err

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl PartialEq for Bech32

Source§

fn eq(&self, other: &Bech32) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Bech32

Source§

impl StructuralPartialEq for Bech32

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.