文字列リテラルに対して文字列を照合する
このチュートリアルは、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()
は簡潔で、より堅牢な型チェックを強制します。