pub struct Utf16U16Codec;Expand description
Combined UTF-16 u16 code-unit codec.
Utf16U16Codec works with UTF-16 code units rather than serialized bytes.
Use crate::Utf16ByteCodec when the input or output is a byte stream with an
explicit byte order.
§Examples
use qubit_text_codec::{
CharsetCodec,
DecodeStatus,
Charset,
Utf16,
Utf16U16Codec,
};
let codec = Utf16U16Codec;
assert_eq!(Charset::UTF_16, codec.charset());
assert_eq!(Utf16::MAX_UNITS_PER_CHAR, codec.max_units_per_char());
let mut output = [0_u16; Utf16::MAX_UNITS_PER_CHAR];
let written = codec.encode_one('😀', &mut output, 0).expect("buffer fits");
assert_eq!(
DecodeStatus::Complete {
value: '😀',
consumed: written,
},
codec.decode_one(&output[..written], 0).expect("valid UTF-16"),
);Implementations§
Source§impl Utf16U16Codec
impl Utf16U16Codec
Sourcepub const fn max_units_per_char(self) -> usize
pub const fn max_units_per_char(self) -> usize
Returns the maximum number of UTF-16 code units needed for one character.
§Returns
Returns Utf16::MAX_UNITS_PER_CHAR.
Trait Implementations§
Source§impl CharsetCodec for Utf16U16Codec
impl CharsetCodec for Utf16U16Codec
Source§fn max_units_per_char(&self) -> usize
fn max_units_per_char(&self) -> usize
Returns the maximum number of UTF-16 code units for one character.
§Returns
Returns Utf16::MAX_UNITS_PER_CHAR.
Source§fn decode_one(
&self,
input: &[u16],
index: usize,
) -> CharsetDecodeResult<DecodeStatus>
fn decode_one( &self, input: &[u16], index: usize, ) -> CharsetDecodeResult<DecodeStatus>
Decodes one UTF-16 scalar value from a u16 prefix.
§Arguments
input- UTF-16 code-unit slice.index- Start offset for parsing; must satisfyindex <= input.len().
§Returns
Ok(DecodeStatus::NeedMore { required, available })when only a partial unit/pair is present.Ok(DecodeStatus::Complete { value, consumed })when one character is decoded.
§Errors
crate::CharsetDecodeErrorKind::MalformedSequencefor invalid surrogate combinations.crate::CharsetDecodeErrorKind::InvalidCodePointwhen resulting scalar is invalid.
Source§fn encode_one(
&self,
ch: char,
output: &mut [u16],
index: usize,
) -> CharsetEncodeResult<usize>
fn encode_one( &self, ch: char, output: &mut [u16], index: usize, ) -> CharsetEncodeResult<usize>
Encodes one Unicode scalar value into UTF-16 code units at index.
§Arguments
ch- The Unicode scalar value to encode.output- Destinationu16buffer.index- Start offset where units are written; must satisfyindex <= output.len().
§Returns
Ok(usize) with the number of written UTF-16 units (1 or 2).
§Errors
crate::CharsetEncodeErrorKind::BufferTooSmallif destination is insufficient.
Source§impl Clone for Utf16U16Codec
impl Clone for Utf16U16Codec
Source§fn clone(&self) -> Utf16U16Codec
fn clone(&self) -> Utf16U16Codec
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for Utf16U16Codec
impl Debug for Utf16U16Codec
Source§impl Default for Utf16U16Codec
impl Default for Utf16U16Codec
Source§fn default() -> Utf16U16Codec
fn default() -> Utf16U16Codec
Returns the “default value” for a type. Read more
Source§impl Hash for Utf16U16Codec
impl Hash for Utf16U16Codec
Source§impl PartialEq for Utf16U16Codec
impl PartialEq for Utf16U16Codec
Source§fn eq(&self, other: &Utf16U16Codec) -> bool
fn eq(&self, other: &Utf16U16Codec) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Copy for Utf16U16Codec
impl Eq for Utf16U16Codec
impl StructuralPartialEq for Utf16U16Codec
Auto Trait Implementations§
impl Freeze for Utf16U16Codec
impl RefUnwindSafe for Utf16U16Codec
impl Send for Utf16U16Codec
impl Sync for Utf16U16Codec
impl Unpin for Utf16U16Codec
impl UnsafeUnpin for Utf16U16Codec
impl UnwindSafe for Utf16U16Codec
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
Mutably borrows from an owned value. Read more