pub struct Bits { /* private fields */ }
Expand description
The Bits
structure stores the encoded data for a QR code.
Implementations§
Source§impl Bits
impl Bits
Sourcepub fn into_bytes(self) -> Vec<u8>
pub fn into_bytes(self) -> Vec<u8>
Convert the bits into a bytes vector.
Sourcepub fn max_len(&self, ec_level: EcLevel) -> QrResult<usize>
pub fn max_len(&self, ec_level: EcLevel) -> QrResult<usize>
The maximum number of bits allowed by the provided QR code version and error correction level.
§Errors
Returns Err(QrError::InvalidVersion)
if it is not valid to use the
ec_level
for the given version (e.g. Version::Micro(1)
with
EcLevel::H
).
Source§impl Bits
impl Bits
Sourcepub fn push_mode_indicator(&mut self, mode: ExtendedMode) -> QrResult<()>
pub fn push_mode_indicator(&mut self, mode: ExtendedMode) -> QrResult<()>
Push the mode indicator to the end of the bits.
§Errors
If the mode is not supported in the provided version, this method
returns Err(QrError::UnsupportedCharacterSet)
.
Source§impl Bits
impl Bits
Sourcepub fn push_eci_designator(&mut self, eci_designator: u32) -> QrResult<()>
pub fn push_eci_designator(&mut self, eci_designator: u32) -> QrResult<()>
Push an ECI (Extended Channel Interpretation) designator to the bits.
An ECI designator is a 6-digit number to specify the character set of
the following binary data. After calling this method, one could call
.push_byte_data()
or similar methods to insert the actual data, e.g.
#![allow(unused_must_use)]
use qrcode::bits::Bits;
use qrcode::types::Version;
let mut bits = Bits::new(Version::Normal(1));
bits.push_eci_designator(9); // 9 = ISO-8859-7 (Greek).
bits.push_byte_data(b"\xa1\xa2\xa3\xa4\xa5"); // ΑΒΓΔΕ
The full list of ECI designator values can be found from http://strokescribe.com/en/ECI.html. Some example values are:
ECI # | Character set |
---|---|
3 | ISO-8859-1 (Western European) |
20 | Shift JIS (Japanese) |
23 | Windows 1252 (Latin 1) (Western European) |
25 | UTF-16 Big Endian |
26 | UTF-8 |
28 | Big 5 (Traditional Chinese) |
29 | GB-18030 (Simplified Chinese) |
30 | EUC-KR (Korean) |
§Errors
If the QR code version does not support ECI, this method will return
Err(QrError::UnsupportedCharacterSet)
.
If the designator is outside of the expected range, this method will
return Err(QrError::InvalidECIDesignator)
.
Source§impl Bits
impl Bits
Sourcepub fn push_kanji_data(&mut self, data: &[u8]) -> QrResult<()>
pub fn push_kanji_data(&mut self, data: &[u8]) -> QrResult<()>
Encodes Shift JIS double-byte data to the bits.
§Errors
Returns Err(QrError::DataTooLong)
on overflow.
Returns Err(QrError::InvalidCharacter)
if the data is not Shift JIS
double-byte data (e.g. if the length of data is not an even number).
Source§impl Bits
impl Bits
Sourcepub fn push_fnc1_first_position(&mut self) -> QrResult<()>
pub fn push_fnc1_first_position(&mut self) -> QrResult<()>
Encodes an indicator that the following data are formatted according to the UCC/EAN Application Identifiers standard.
#![allow(unused_must_use)]
use qrcode::bits::Bits;
use qrcode::types::Version;
let mut bits = Bits::new(Version::Normal(1));
bits.push_fnc1_first_position();
bits.push_numeric_data(b"01049123451234591597033130128");
bits.push_alphanumeric_data(b"%10ABC123");
In QR code, the character %
is used as the data field separator (0x1D).
§Errors
If the mode is not supported in the provided version, this method
returns Err(QrError::UnsupportedCharacterSet)
.
Sourcepub fn push_fnc1_second_position(
&mut self,
application_indicator: u8,
) -> QrResult<()>
pub fn push_fnc1_second_position( &mut self, application_indicator: u8, ) -> QrResult<()>
Encodes an indicator that the following data are formatted in accordance with specific industry or application specifications previously agreed with AIM International.
#![allow(unused_must_use)]
use qrcode::bits::Bits;
use qrcode::types::Version;
let mut bits = Bits::new(Version::Normal(1));
bits.push_fnc1_second_position(37);
bits.push_alphanumeric_data(b"AA1234BBB112");
bits.push_byte_data(b"text text text text\r");
If the application indicator is a single Latin alphabet (a–z / A–Z), please pass in its ASCII value + 100:
bits.push_fnc1_second_position(b'A' + 100);
§Errors
If the mode is not supported in the provided version, this method
returns Err(QrError::UnsupportedCharacterSet)
.
Source§impl Bits
impl Bits
Sourcepub fn push_terminator(&mut self, ec_level: EcLevel) -> QrResult<()>
pub fn push_terminator(&mut self, ec_level: EcLevel) -> QrResult<()>
Pushes the ending bits to indicate no more data.
§Errors
Returns Err(QrError::DataTooLong)
on overflow.
Returns Err(QrError::InvalidVersion)
if it is not valid to use the
ec_level
for the given version (e.g. Version::Micro(1)
with
EcLevel::H
).
Source§impl Bits
impl Bits
Auto Trait Implementations§
impl Freeze for Bits
impl RefUnwindSafe for Bits
impl Send for Bits
impl Sync for Bits
impl Unpin for Bits
impl UnwindSafe for Bits
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more