// dictionary
文字列型.
文字列型
Rust には2つの主要な文字列型があります:String と &str。使い分けが重要です。
String と &str の違い
fn main() {
// &str: 文字列スライス(不変、固定長またはスタック上の参照)
let s1: &str = "hello";
let s2: &str = &String::from("world");
// String: ヒープに確保される可変な文字列
let mut s3 = String::from("hello");
s3.push_str(" world");
println!("{}", s3);
}
よく使うメソッド
let s = String::from("hello world");
// 長さ、空判定
println!("{}", s.len()); // バイト数
println!("{}", s.is_empty());
// スライス
println!("{}", &s[0..5]); // "hello"
// 検索、置換
if let Some(pos) = s.find("world") {
println!("{}", pos);
}
let replaced = s.replace("world", "rust");
UTF-8 との関わり
Rust の文字列はすべて UTF-8 でエンコードされています。バイト数と文字数が異なる場合があるため注意が必要です。
let s = "こんにちは";
println!("{}", s.len()); // 15 (バイト数)
println!("{}", s.chars().count()); // 5 (文字数)