Crate conversion

Source
Expand description

An abstraction crate to convert iterators on the fly.

§Demo

use conversion::converter::encoding::utf8::{UTF8Decoder, UTF8Encoder};
use conversion::converter::IterConverter;
use conversion::iter::{ConvertedIterator, ConvertedTryIterator};

// An original byte string.
let iter = b"stra\xc3\x9fe".into_iter().cloned();

// Decoding UTF-8 byte string.
let decoded = ConvertedIterator::new(iter, UTF8Decoder::new());
assert_eq!(Ok(String::from("straße")), decoded.clone().collect());

// Convert to uppercase. (use ConvertedTryIterator because `decoded` returns Result items.)
let uppered = ConvertedTryIterator::new(decoded, IterConverter::new(char::to_uppercase));
assert_eq!(Ok(String::from("STRASSE")), uppered.clone().collect());

// Re-encode the value.
let encoded = ConvertedTryIterator::new(uppered, UTF8Encoder::new());
assert_eq!(Ok(b"STRASSE".to_vec()), encoded.collect());

Modules§

converter
A collection of basic converters.
error
Error types for this crate.
infallible
Infallible converters.
iteralloc
Iterator support.
streamasync
Asynchronous stream support.

Traits§

Converter
A trait for converters which converts N items into M outputs.