2016-08-08 10 views
2

私にはVec<i8>があります。&strと読む必要があります。今私はそれを行うための2つの方法を見つけました。両方とも私に不幸を残します。Vec <i8>と&strの間の変換

// Quite complex for something this simple 
str::from_utf8(buffer.into_iter().map(|c| c as u8).collect::<Vec<u8>>().as_slice()) 

// transmute makes me uncomfortable 
str::from_utf8(mem::transmute::<Vec<i8>, Vec<u8>>(buffer).as_slice()); 

これを達成するためのいずれかの単純な方法はありますか?

答えて

2

Stringへの変換は、strを期待する関数に&Stringを渡すことができれば、より良いことが分かります。あなたはおおよそ

String::from_utf8(buffer.iter().map(|&c| c as u8).collect()) 

にそれを短縮することができ、後には、私はあなたがこれらのより良い行うことができます疑うだけ

String::from_utf8(mem::transmute(buffer)) 

に短縮することができます。

関連する問題