# 1.9.0[−][src]Function std::char::decode_utf16

###

    pub fn decode_utf16<I>(iter: I) -> DecodeUtf16<<I as IntoIterator>::IntoIter>ⓘNotable traits for DecodeUtf16<I>impl<I> Iterator for DecodeUtf16<I> where
        I: Iterator<Item = u16>,     type Item = Result<char, DecodeUtf16Error>; where
        I: IntoIterator<Item = u16>,

Creates an iterator over the UTF-16 encoded code points in `iter`, returning unpaired surrogates as `Err`s.

# Examples

Basic usage:

    use std::char::decode_utf16;

    // 𝄞mus<invalid>ic<invalid>
    let v = [
        0xD834, 0xDD1E, 0x006d, 0x0075, 0x0073, 0xDD1E, 0x0069, 0x0063, 0xD834,
    ];

    assert_eq!(
        decode_utf16(v.iter().cloned())
            .map(|r| r.map_err(|e| e.unpaired_surrogate()))
            .collect::<Vec<_>>(),
        vec![
            Ok('𝄞'),
            Ok('m'), Ok('u'), Ok('s'),
            Err(0xDD1E),
            Ok('i'), Ok('c'),
            Err(0xD834)
        ]
    );

Run

A lossy decoder can be obtained by replacing `Err` results with the replacement character:

    use std::char::{decode_utf16, REPLACEMENT_CHARACTER};

    // 𝄞mus<invalid>ic<invalid>
    let v = [
        0xD834, 0xDD1E, 0x006d, 0x0075, 0x0073, 0xDD1E, 0x0069, 0x0063, 0xD834,
    ];

    assert_eq!(
        decode_utf16(v.iter().cloned())
           .map(|r| r.unwrap_or(REPLACEMENT_CHARACTER))
           .collect::<String>(),
        "𝄞mus�ic�"
    );

Run