この記事は Rust1.5での動作確認をしています。
RustでStringを &str に変換する際に、
String fn as_str をよく使いますが、RFCの改定を行う必要があるため、unstable になっています。
Rust1.0の頃は as_slice
というメソッドどして使用することが可能で、最近のRustのバージョンでも as_str
は使用できました。
結構便利なメソッドだったのですが、stable版Rustでは使用できないので、&strが必須なcrateを扱う場合は、辛い場面が多々あります。
調べてみると、stackoverflow:How to convert String into &'static str に答えが書いてありました。
let s: String = "abcdefg".to_owned();
let s_slice: &str = &s[..]; // take a full slice of the string
let s_slice: &str = &*s; // s : String
// *s : str (via Deref<Target=str>)
// &*s: &str
出典: stackoverflow:How to convert String into &'static str
as_strがstableになるまで、こちらを使うと良いかもしれません。