encode_unicode
UTF-8 and UTF-16 character types, iterators and related methods for char, u8 and u16.
Features
Utf8Char: Acharstored as UTF-8. Can be borrowed as astroru8slice.Utf16Char: Acharstored as UTF-16. Can be borrowed as anu16slice.- Conversion methods on 
char:- to and from UTF-8 as 
[u8; 4]or slice. - to and from UTF-16 as 
(u16, Option<u16>)or slice. 
 - to and from UTF-8 as 
 - Iterator adapters
for converting betwenn 
u8s andUtf8Chars oru16s andUtf16Chars. - Optimized slice-based decoding iterators.
 - Precise errors when decoding a char from UTF-8, UTF-16 or 
u32fails. - Utility methods on 
u8andu16. 
The minimum supported version of Rust is 1.15, older versions might work now but can break with a minor update.
Optional features
#![no_std]-mode: There are a few differences:Errordoesn't exist, butdescription()is made available as an inherent impl.Extend/FromIterator-implementations forString/Vec<u8>/Vec<u16>are missing.- There is no 
io, soUtf8IteratorandUtf8CharSplitterdoesn't implementRead. This feature is enabled by settingdefault-features=falseinCargo.toml:encode_unicode = {version="0.3.4", default-features=false}. 
- Integration with the ascii crate:
Convert 
Utf8CharandUtf16Charto and from ascii::AsciiChar. 
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
 - MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
 
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
History
The original purpose of this crate was to provide standins for the then
unstable encode_utf8() and encode_utf16().
The standins were removed in 0.3 when Rust 1.15 stabilized the encode_
methods, but the other stuff I added, such as iterators like
those `encode_utf{8,16}() returned for a while, might still be of use.