Rust での文字列から STR への変換
Rust は、堅牢で安全になるように設計された言語です。また、システムプログラミングからスクリプティングまで、あらゆるもののパフォーマンスに焦点を当てています。
Rust の String タイプは不変ではありませんが、String タイプには、文字列を作成および操作するためのメソッドがあります。この記事では、String
と&static str
について詳しく説明します。
Rust のストリングの概念
文字列は、拡張可能な 8 ビットの符号なし配列であるベクトル Vec
を含む構造です。
str
とは異なり、文字列はデータの所有権を保持します。したがって、文字列の値を変数に割り当てるときに、&または借用状態を利用することは必須ではありません。
開始時に、文字列のサイズはコンパイル時に既知または不明になる可能性がありますが、長さが制限に達するまで拡張できます。
構文:
let my_string = String::from("Hello World");
Rust の str
の概念
Rust では、str
は文字列リテラルを定義するプリミティブ型です。その情報は、プログラムバイナリのメモリ位置に割り当てられます。
ストリングスライス
スライスは、一連のアイテムを含むビューであり、構文で示されます。スライスには所有権はありませんが、アイテムが表示される順序を参照できます。
結果として、文字列スライスは文字列の要素のシーケンスへの参照になります。
let hello_string = String::from("hello world");
let hello_slice = &hello_string[4.8];
文字"hello world"
は hello_string
変数に格納されます。拡大可能な配列である文字列には、各文字の場所またはインデックスが含まれています。
文字列リテラル
文字列リテラルは、テキストを二重引用符で囲むことによって作成されます。文字列のリテラルは少し異なります。
これらは、読み取り専用メモリに実行可能ファイルの一部として格納されている事前に割り当てられたテキスト
を参照する文字列スライスです。つまり、RAM はソフトウェアに付属しており、スタックキャッシュに依存しません。
Rust での文字列の str
への変換
文字列は、コードの存続期間全体にわたって存在しない場合があります。これは、&'static str
の存続期間が意味するため、文字列から&'static str
を取得することはできません。String のライフスパンで指定されたスライスのみを取得できます。
サンプルコード:
fn main() {
let hello_string = String::from("Hello world");
print_infi(&hello_string);
print!("Adil {}", hello_string);
}
fn print_infi(infi: &str) {
println!("Steve {} ", infi);
}
出力:
Steve Hello world
Adil Hello world
Rust の str
と String の違い
String |
Str |
|
---|---|---|
1.1。 | 可変 | 不変 |
2.2。 | コンパイル時のサイズは不明です。 | コンパイル時に、サイズは既知です。 |
3.3。 | データはヒープに保存されます。 | データは、アプリケーションバイナリのメモリ位置に保存されます。 |
4.4。 | 単一の str 変数を割り当てるには、を使用または参照します。 |
文字列変数値を割り当てるために、使用または参照する必要はありません。 |
Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.
Facebook