pub struct CharsetConverter<D, E>where
D: CharsetCodec,
E: CharsetCodec,{ /* private fields */ }Expand description
Converts units encoded with one charset into units encoded with another charset.
The converter owns a CharsetDecoder for the source charset and a
CharsetEncoder for the target charset. A decoded character may be kept
pending between calls when the target output buffer is full.
§Type Parameters
D: Low-level charset codec used by the source decoder.E: Low-level charset codec used by the target encoder.
use qubit_text_codec::{Coder, CharsetDecoder, CharsetEncoder, CharsetConverter, Utf8Codec, Utf16U16Codec};
let mut converter = CharsetConverter::new(
CharsetDecoder::new(Utf8Codec),
CharsetEncoder::new(Utf16U16Codec),
);
let mut output = [0_u16; 2];
let progress = converter
.convert("AB".as_bytes(), 0, &mut output, 0)
.expect("convert bytes to utf-16");
assert_eq!(2, progress.read());
assert_eq!(2, progress.written());
assert_eq!([65, 66], output);Implementations§
Source§impl<D, E> CharsetConverter<D, E>where
D: CharsetCodec,
E: CharsetCodec,
impl<D, E> CharsetConverter<D, E>where
D: CharsetCodec,
E: CharsetCodec,
Sourcepub fn from_codecs(source: D, target: E) -> Self
pub fn from_codecs(source: D, target: E) -> Self
Sourcepub fn new(decoder: CharsetDecoder<D>, encoder: CharsetEncoder<E>) -> Self
pub fn new(decoder: CharsetDecoder<D>, encoder: CharsetEncoder<E>) -> Self
Sourcepub const fn decoder(&self) -> &CharsetDecoder<D>
pub const fn decoder(&self) -> &CharsetDecoder<D>
Sourcepub const fn encoder(&self) -> &CharsetEncoder<E>
pub const fn encoder(&self) -> &CharsetEncoder<E>
Sourcepub fn decoder_mut(&mut self) -> &mut CharsetDecoder<D>
pub fn decoder_mut(&mut self) -> &mut CharsetDecoder<D>
Sourcepub fn encoder_mut(&mut self) -> &mut CharsetEncoder<E>
pub fn encoder_mut(&mut self) -> &mut CharsetEncoder<E>
Trait Implementations§
Source§impl<D, E> Clone for CharsetConverter<D, E>
impl<D, E> Clone for CharsetConverter<D, E>
Source§fn clone(&self) -> CharsetConverter<D, E>
fn clone(&self) -> CharsetConverter<D, E>
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<D, E> Coder<<D as CharsetCodec>::Unit, <E as CharsetCodec>::Unit> for CharsetConverter<D, E>where
D: CharsetCodec,
E: CharsetCodec,
impl<D, E> Coder<<D as CharsetCodec>::Unit, <E as CharsetCodec>::Unit> for CharsetConverter<D, E>where
D: CharsetCodec,
E: CharsetCodec,
Source§fn max_output_len(&self, input_len: usize) -> Option<usize>
fn max_output_len(&self, input_len: usize) -> Option<usize>
Returns the target-side upper bound for converted output units.
Source§fn convert(
&mut self,
input: &[D::Unit],
input_index: usize,
output: &mut [E::Unit],
output_index: usize,
) -> Result<CoderProgress, Self::Error>
fn convert( &mut self, input: &[D::Unit], input_index: usize, output: &mut [E::Unit], output_index: usize, ) -> Result<CoderProgress, Self::Error>
Converts source units to target units through the configured decoder and encoder.
Source§fn finish(
&mut self,
output: &mut [E::Unit],
output_index: usize,
) -> Result<CoderProgress, Self::Error>
fn finish( &mut self, output: &mut [E::Unit], output_index: usize, ) -> Result<CoderProgress, Self::Error>
Flushes one pending decoded character, if any.
§Parameters
output: Complete output slice visible to the converter.output_index: Absolute output index where writing starts.
§Returns
Returns completed progress when no pending character exists.
Returns NeedOutput when pending output cannot be flushed due to
missing output capacity.
§Errors
Returns CharsetConvertError::Encode when encoding the pending
character violates target charset policy.
Source§type Error = CharsetConvertError
type Error = CharsetConvertError
Error reported for semantic conversion failures.
Source§impl<D, E> Debug for CharsetConverter<D, E>
impl<D, E> Debug for CharsetConverter<D, E>
Source§impl<D, E> PartialEq for CharsetConverter<D, E>
impl<D, E> PartialEq for CharsetConverter<D, E>
Source§fn eq(&self, other: &CharsetConverter<D, E>) -> bool
fn eq(&self, other: &CharsetConverter<D, E>) -> bool
Tests for
self and other values to be equal, and is used by ==.impl<D, E> Eq for CharsetConverter<D, E>
impl<D, E> StructuralPartialEq for CharsetConverter<D, E>where
D: CharsetCodec,
E: CharsetCodec,
Auto Trait Implementations§
impl<D, E> Freeze for CharsetConverter<D, E>
impl<D, E> RefUnwindSafe for CharsetConverter<D, E>
impl<D, E> Send for CharsetConverter<D, E>
impl<D, E> Sync for CharsetConverter<D, E>
impl<D, E> Unpin for CharsetConverter<D, E>
impl<D, E> UnsafeUnpin for CharsetConverter<D, E>where
D: UnsafeUnpin,
E: UnsafeUnpin,
impl<D, E> UnwindSafe for CharsetConverter<D, E>
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