Skip to main content

TokenUrEncoder

Struct TokenUrEncoder 

Source
pub struct TokenUrEncoder { /* private fields */ }
Expand description

Encodes a Token into UR fragments for display as an animated QR code

Each call to next_part returns one fragment (ur:bytes/…) to be displayed as a single QR frame. The first fragment_count frames cover the whole token; the stream is unbounded and frames beyond that are redundant fountain parts, so a receiver can complete from any sufficiently large subset of frames. The sender typically loops the frames until the receiver signals completion.

If the token fits into a single frame, the single-part form (ur:bytes/<payload>, without fragment indices) is returned, matching the reference implementations.

V3 tokens are normalized to V4 before serialization, so the encoded token payload always uses the cashuB… format.

Implementations§

Source§

impl TokenUrEncoder

Source

pub fn new( token: &Token, max_fragment_length: usize, ) -> Result<TokenUrEncoder, Error>

Creates a new encoder for token

max_fragment_length is the maximum number of payload bytes per QR frame; DEFAULT_MAX_FRAGMENT_LENGTH is a sane default.

§Errors

Returns an error if max_fragment_length is zero or the token cannot be converted to V4 or serialized.

Source

pub fn next_part(&mut self) -> Result<String, Error>

Returns the next UR fragment to display as a QR frame

§Errors

Returns an error if the fragment cannot be encoded.

Source

pub fn current_index(&self) -> usize

Returns the number of fragments emitted so far

Source

pub fn fragment_count(&self) -> usize

Returns the number of fragments the token was split into

Source

pub fn is_single_fragment(&self) -> bool

Returns whether the token fits into a single QR frame

Trait Implementations§

Source§

impl Debug for TokenUrEncoder

Source§

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

Formats the value using the given formatter. Read more

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more