文字列型

String型

String型は、ヒープに格納された可変の文字列データを表します。文字列の内容を変更したり、追加したりすることができます 。

  • 可変の文字列: String型は、ヒープに格納された可変長の文字列データを表します。文字列の内容を変更したり、追加したりすることができます。
  • 所有権: Stringは所有権を持ち、メモリ管理を行います。
  • 用途: 動的にサイズを変更する必要がある文字列データを扱う場合に適しています。
#![allow(unused)]
fn main() {
let mut s = String::from("Hello");
s.push_str(", world!"); // ", world!"を追加
println!("{}", s)
}

String型?

String型を用いたサンプルコードでは、s.push_str(", world")で値を追加しています。そうです。ベクタ型と同じです。 String型は内部的にはVec<u8>(バイトのベクタ)として実装されているようです。

文字列スライス型(&str)

文字列スライスは、既存の文字列データを参照する不変のビューです。文字列スライス自体は変更できません。 文字列スライスは、文字列データの一部を効率的に参照するために使用されます。

  • 不変の文字列: 文字列スライスは、既存の文字列データを参照する不変のビューです。文字列スライス自体は変更できません。
  • 軽量: 文字列スライスは、文字列データの一部を効率的に参照するために使用されます。
  • 用途: 既存の文字列データを参照する場合や、文字列リテラルを扱う場合に適しています。
#![allow(unused)]
fn main() {
let s = "Hello, world!";
let slice = &s[0..5]; // "Hello"
}