2015-07-08 15 views
11

Bu önemsiz gibi görünüyor, ancak bunu yapmanın bir yolunu bulamıyorum. Örneğin Str a & [u8] a dönüştürmek

,

fn f(s: &[u8]) {} 

pub fn main() { 
    let x = "a"; 
    f(x) 
} 

derleme başarısız:

error: mismatched types: 
expected `&[u8]`, 
    found `&str` 
(expected slice, 
    found str) [E0308] 

documentation Bununla birlikte, ifade etmektedir:

strs gerçek temsili dilimleri doğrudan dönüşümler vardır: & str , & [u ile aynıdır. 8].

fn f(s: &[u8]) {} 

pub fn main() { 
    let x = "a"; 
    f(x.as_bytes()) 
} 

veya özel örnekte, değişmez bir byte kullanabilirsiniz:

+1

bu yaklaşık beş biridir gerçeği Bu hata mesajı için google sonuçları bana deli gibi görünüyor! İlk test programında 1.0 sonrası ("kedi" yi uygulayarak) vurdum. –

cevap

15

Sen as_bytes yöntemi kullanabilirsiniz

let x = b"a"; 
f(x) 
+4

Belgelerin * gösterime * ilişkin olduğunu eklemek istiyorum, ancak kavramsal olarak bir dize dilimi, içeriğinin geçerli bir UTF-8 olduğunu, bir bayt diliminin olmadığını garanti eder. – llogiq

İlgili konular