Windows で Rust を触っていると UTF-16 → UTF-8 変換する場面があります。変換はstd::char::decode_utf16を使います。 use std::char::{decode_utf16, REPLACEMENT_CHARACTER}; fn decode(source: &[u16]) -> String { decode_utf16(source.iter().cloned()) .map(|r| r.unwrap_or(REPLACEMENT_CHARACTER)) .collect() } NULL 文字で終わる UTF-16 文字列へのポインタを引数に取るなら、source.iter().cloned()のところをsource.iter().take_while(|&v| *v != 0).cloned()として NULL 文字までをスライスと