// dictionary
文字列リテラル.
文字列リテラルは"こんにちは"のようにダブルクォートで囲んで書く固定の文字列で、式としての型は文字列スライスの&'static strです。文字列データは静的メモリに配置され、プログラム終了まで有効な参照として扱えます。シングルクォートで書く文字型のリテラルとは区別されます。
fn main() {
let greeting = "いらっしゃいませ\nご注文をどうぞ"; // \n は改行のエスケープ
let path = r"C:\Users\hanako"; // 生文字列: \ をそのまま書ける
let quote = r#"店員は"ありがとうございました"と言いました"#;
println!("{greeting}\n{path}\n{quote}");
}Playgroundで開くリテラルの種類
| 記法 | 名称 | 型 |
|---|---|---|
"..." |
文字列リテラル | &'static str |
r"..." / r#"..."# |
生文字列リテラル | &'static str |
b"..." / br"..." |
バイト文字列リテラル | &'static [u8; N] |
c"..." / cr"..." |
C文字列リテラル | &'static CStr |
生文字列(raw string)はエスケープを一切処理しません。本文に"を含めたいときはr#"..."#のように両端の#を同数ずつ増やします。バイト文字列はASCII文字とエスケープだけを並べたもので、u8(整数型の一種)の配列型への参照になります。C文字列(Rust 1.77で安定化・2021エディション以降)は末尾にNUL終端が自動で付き、C言語のライブラリ連携で使います。
補足
使えるエスケープの一覧
| エスケープ | 意味 |
|---|---|
\n / \r / \t |
改行 / 復帰 / タブ |
\\ / \" / \' |
\ / " / ' そのもの |
\0 |
NUL文字 |
\x41 |
16進2桁の文字コード(通常の文字列では0x7Fまで。バイト文字列・C文字列では \xFFまで可) |
\u{3042} |
16進最大6桁のUnicodeコードポイント |
また、行末に\を置くと、直後の改行から次の非空白文字までのすべての空白(空行を含む)が文字列に含まれず、長いリテラルをソースコード上だけ改行できます。複数の改行がまとめてスキップされる挙動は将来変更される可能性があるため、依存しないことが推奨されています。
この辞書が使われているページ
backlinks 5