2016-08-08 8 views
2

Ich habe eine Vec<i8> Ich muss als &str lesen. Im Moment habe ich zwei Möglichkeiten gefunden, beides zu tun, was mich unglücklich macht.Konvertieren zwischen Vec <i8> und & Str

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

und

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

Gibt es einfachere Wege, dies zu erreichen?

Antwort

2

Sie könnten feststellen, dass die Umwandlung in eine String ist schöner, vorausgesetzt, dass Sie &String s zu Funktionen erwarten str s übergeben können. Sie können es

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

grob verkürzen und die später kann

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

nur verkürzt werden, bezweifle ich, Sie können als diese es besser machen.

Verwandte Themen