文字列リテラルに対して文字列を照合する
このチュートリアルは、Rust の文字列リテラルに対して文字列を照合することについてです。
錆びた文字列
String 型は、文字列の内容を所有するため、最も人気のある文字列型です。 プリミティブ str と密接に関連しています。
Rust では、文字列は String と &str の 2つのタイプに分類されます。
String はバイトのベクトル (Vec<u8>) として保存されますが、有効な UTF-8 シーケンスであることが保証されています。 String は、拡張可能で null で終了しないヒープ割り当て変数です。
&str は常に有効な UTF-8 シーケンスを指すスライス (&[u8]) であり、&[T] を使用して表示する方法と同様に、String を表示するために使用できます。 Vec<T> に変換します。
String::from を使用して、リテラル文字列から String を作成できます。
例:
let _welcome = String::from("Welcome to the world of Rust");
Rust の文字列リテラル
特殊文字を含む文字列リテラルを表現する方法は多数あります。 それらはすべて同様の &str; になります。 したがって、最も便利な形式を使用することをお勧めします。
エスケープする文字が多すぎる場合や、文字列を入力した方が便利な場合があります。 これは、生の文字列リテラルが使用されている場合です。
例:
fn main() {
let rawString = r"This is an example of raw string: \x3F \u{211D}";
println!("{}", rawString);
let spec_char = r#"I learnt that: "Quotes can also be used!""#;
println!("{}", spec_char);
}
出力:
This is an example of raw string: \x3F \u{211D}
I learnt that: "Quotes can also be used!"
生の文字列に引用符を追加する必要がある場合は、上記のコード行で使用したように、# のペアを追加する必要があります。
文字列リテラルには改行を含めることができます。 行の終わりは、改行 (U+000A) またはキャリッジ リターンと改行のペア (U+10000, U+10000) になります。
注目すべき例外は、エスケープされていない U+005C 文字が改行の直前にある場合に発生します。 次の行の U+005C 文字とすべての空白は U+000A に変換されません。
文字列を Rust で &str に変換する
String を &str に変換するには、このように .as_str() を使用する必要があります。
例:
fn main() {
let the_string = String::from("z");
match the_string.as_str() {
"x" => println!("Hello"),
"y" => println!("There"),
"z" => println!("Hello Rust!!!"),
_ => println!("something else!"),
}
}
出力:
Hello Rust!!!
.as str() は簡潔で、より堅牢な型チェックを強制します。