Skip to main content

StructuredAppend

Struct StructuredAppend 

Source
#[non_exhaustive]
pub struct StructuredAppend<'a> { /* private fields */ }
Expand description

A Structured Append sequence builder: splits one payload across 2..=16 QR symbols.

Construct with StructuredAppend::new, then call StructuredAppend::encode to emit the symbols. Every emitted symbol is a complete, independently-scannable QR code that also carries the Structured Append header, so a compliant reader knows how the symbols belong together.

Implementations§

Source§

impl<'a> StructuredAppend<'a>

Source

pub fn new(symbols: u8, payload: &'a [u8]) -> QrResult<Self>

Creates a builder that will split payload across symbols QR symbols.

symbols must be in 2..=16 (per ISO/IEC 18004 §7.4 a Structured Append sequence has at least two symbols). The parity byte (the XOR of every payload byte) is computed once here and reused for every symbol.

§Errors

Returns QrError::InvalidStructuredAppend if symbols is not in 2..=16.

use qrcode_rs::structured_append::StructuredAppend;
use qrcode_rs::EcLevel;

let sa = StructuredAppend::new(3, b"split across three symbols")?;
let codes = sa.encode(EcLevel::M)?;
assert_eq!(codes.len(), 3);
Source

pub const fn symbols(&self) -> u8

The number of symbols the payload will be split across.

Source

pub const fn parity(&self) -> u8

The Structured Append parity byte (the XOR of every payload byte), stored identically in every emitted symbol so a reader can verify it has reassembled the right group.

Source

pub fn payload(&self) -> &'a [u8]

The payload being split.

Source

pub fn encode(&self, ec: EcLevel) -> QrResult<Vec<QrCode>>

Encodes the payload into Self::symbols QR codes.

The payload is split as evenly as possible (the last symbol may be shorter). Each symbol is encoded at the smallest version that fits its chunk plus the 20-bit Structured Append header, at error-correction level ec. Symbols in a sequence may therefore differ in version — this is permitted by the standard.

§Errors

Returns QrError::DataTooLong if any chunk cannot fit even version 40 at the requested error-correction level.

Trait Implementations§

Source§

impl<'a> Clone for StructuredAppend<'a>

Source§

fn clone(&self) -> StructuredAppend<'a>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<'a> Copy for StructuredAppend<'a>

Source§

impl<'a> Debug for StructuredAppend<'a>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for StructuredAppend<'a>

§

impl<'a> RefUnwindSafe for StructuredAppend<'a>

§

impl<'a> Send for StructuredAppend<'a>

§

impl<'a> Sync for StructuredAppend<'a>

§

impl<'a> Unpin for StructuredAppend<'a>

§

impl<'a> UnsafeUnpin for StructuredAppend<'a>

§

impl<'a> UnwindSafe for StructuredAppend<'a>

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, 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.