質問1: Rust言語のデータ型を教えてください。
回答1:
Rust言語には、以下のようなデータ型があります。
-
- プリミティブ型
-
- ・ bool: 真偽値 (true/false)
-
- ・ char: Unicodeの単一の文字
-
- ・ 数値型
-
- ・ 整数型: i8, i16, i32, i64, i128, isize (符号あり), u8, u16, u32, u64, u128, usize (符号なし)
-
- ・ 浮動小数点数型: f32, f64
-
- コンパウンド型
-
- ・ 配列 (array): 同じ型の要素を格納する固定長のデータ構造
-
- ・ タプル (tuple): 異なる型の要素を複数持つ固定長のデータ構造
-
- ・ 構造体 (struct): 異なる型の要素を持つカスタムのデータ構造
-
- ・ 列挙型 (enum): 有限個のバリアントから成るデータ型
-
- ポインタ型
-
- ・ 参照 (reference): 値の所有権を移動せずに値にアクセスする方法
- ・ ポインタ (pointer): アドレスを表す型
Rust言語のデータ型は、静的型付けを採用しているため、コンパイル時に型の整合性がチェックされます。また、変数の所有権に関するルールが厳密に定義されており、メモリ安全性を保証することができます。
質問2: Rust言語の文字列型の使い方を教えてください。
回答2:
Rust言語には、以下の2つの文字列型があります。
-
- 文字列スライス (string slice): &str
-
- ・ UTF-8エンコードされたバイト列を指す不変の参照型
-
- ・ 文字列リテラルは、コンパイル時にプログラムのバイナリに埋め込まれた不変の&’static str型として扱われる
-
- 文字列 (String)
-
- ・ 可変のUTF-8エンコードされた文字列型
-
- ・ ヒープに格納される可変のバイト列を持つ
- ・ 文字列スライスから作成することができる
文字列スライスは、通常は不変であるため、文字列の参照や操作に使用されます。一方、文字列は可変であるため、文字列の操作が必要な場合に使用されます。また、文字列スライスと文字列は相互変換が可能です。例えば、文字列スライスから文字列を作成するには、to_string()メソッドを使用することができます。
質問3: Rust言語の文字列型を教えてください。
回答3:
Rust言語の文字列型には、文字列スライス(&str)と文字列(String)の2つがあります。それぞれの使い方を以下に説明します。
文字列スライス(&str)の使い方
文字列スライスは、UTF-8エンコードされたバイト列を指す不変の参照型であり、通常は不変であるため、文字列の参照や操作に使用されます。以下は、文字列スライスの宣言と使用例です。
fn main() {
let s: &str = "Hello, world!"; // 文字列リテラルは&'static str型であるため、明示的な型指定は不要
println!("{}", s); // Hello, world!
let slice = &s[0..5]; // スライスを作成する
println!("{}", slice); // Hello
}
文字列(String)の使い方
文字列は、可変のUTF-8エンコードされた文字列型であり、文字列の操作が必要な場合に使用されます。以下は、文字列の宣言と使用例です。
fn main() {
let mut s: String = String::from("Hello, "); // 可変の文字列を宣言する
s.push_str("world!"); // 文字列を連結する
println!("{}", s); // Hello, world!
let slice = &s[0..5]; // 文字列スライスを作成する
println!("{}", slice); // Hello
}
文字列の作成には、String::new()メソッドを使用することもできます。また、文字列スライスから文字列を作成するには、to_string()メソッドを使用することができます。
fn main() {
let s1: String = String::new(); // 空の文字列を作成する
let s2: String = "Hello, world!".to_string(); // 文字列スライスから文字列を作成する
println!("{}", s2); // Hello, world!
}
Rustの文字列型には、メソッドが多数用意されているため、文字列の操作が非常に柔軟であると言えます。
質問4: Rust言語の文字列型のメソッドを教えてください。
回答4:
Rust言語の文字列型には、多数のメソッドが用意されています。以下に、代表的な文字列型のメソッドをいくつか紹介します。
文字列スライス (&str)のメソッド
・ len(): 文字列の長さを返します。
・ chars(): 文字列をUnicodeスカラー値のシーケンスに変換するイテレータを返します。
・ as_bytes(): 文字列をUTF-8エンコードされたバイト列に変換するイテレータを返します。
・ split_whitespace(): 空白文字で文字列を分割するイテレータを返します。
・ starts_with(): 指定された文字列で始まるかどうかをチェックします。
・ ends_with(): 指定された文字列で終わるかどうかをチェックします。
・ trim(): 文字列の両端から空白文字を取り除きます。
・ to_string(): 文字列スライスをString型に変換します。
文字列 (String)のメソッド
・ len(): 文字列の長さを返します。
・ capacity(): 文字列のヒープ領域で確保されている容量を返します。
・ push_str(): 文字列を連結します。
・ push(): 1文字を文字列の末尾に追加します。
・ remove(): 指定された位置の文字を文字列から削除します。
・ replace(): 指定された文字列を別の文字列に置換します。
・ split()、split_whitespace(): 指定された文字列で文字列を分割するイテレータを返します。
・ starts_with(): 指定された文字列で始まるかどうかをチェックします。
・ ends_with(): 指定された文字列で終わるかどうかをチェックします。
・ trim(): 文字列の両端から空白文字を取り除きます。
・ to_uppercase(): 大文字に変換します。
・ to_lowercase(): 小文字に変換します。
・ into_bytes(): 文字列をUTF-8エンコードされたバイト列に変換します。
・ into_boxed_str(): Box型に変換します。
上記以外にも多数のメソッドが用意されています。詳細は公式ドキュメントを参照してください。