この記事は 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になるまで、こちらを使うと良いかもしれません。

bannerAds