文字列型
String型
String型は、ヒープに格納された可変の文字列データを表します。文字列の内容を変更したり、追加したりすることができます 。
- 可変の文字列: String型は、ヒープに格納された可変長の文字列データを表します。文字列の内容を変更したり、追加したりすることができます。
- 所有権: Stringは所有権を持ち、メモリ管理を行います。
- 用途: 動的にサイズを変更する必要がある文字列データを扱う場合に適しています。
#![allow(unused)] fn main() { let mut s = String::from("Hello"); s.push_str(", world!"); // ", world!"を追加 println!("{}", s) }
String型を用いたサンプルコードでは、s.push_str(", world")
で値を追加しています。そうです。ベクタ型と同じです。
String型は内部的にはVec<u8>
(バイトのベクタ)として実装されているようです。
文字列スライス型(&str
)
文字列スライスは、既存の文字列データを参照する不変のビューです。文字列スライス自体は変更できません。 文字列スライスは、文字列データの一部を効率的に参照するために使用されます。
- 不変の文字列: 文字列スライスは、既存の文字列データを参照する不変のビューです。文字列スライス自体は変更できません。
- 軽量: 文字列スライスは、文字列データの一部を効率的に参照するために使用されます。
- 用途: 既存の文字列データを参照する場合や、文字列リテラルを扱う場合に適しています。
#![allow(unused)] fn main() { let s = "Hello, world!"; let slice = &s[0..5]; // "Hello" }