Open2
&str String rust
&str
- 静的領域に格納
- スタックには、ポインター、長さを持つ
- ポインターは静的領域にある実データの先頭アドレスを指している
s.as_ptr()
- 長さは静的領域に格納した、文字列のバイト数
s.len()
let s = "hello"; // 5bytes
let t = "world"; // 5bytes
println!("s: {:p}", &s);
println!("t: {:p}", &t);
16byte ( 8:pointer / 8: length ) のズレを確認できる
- 格納先は静的領域なので、文字列は不変
String
- ヒープに格納
- スタックには、ポインター、長さ、キャパシティーを持つ
- ポインターはヒープにある実データの先頭アドレスを指している
s.as_ptr()
- 長さはヒープに格納した、文字列のバイト数
s.len()
- キャパシティーは長さに対応したものを自動的に決めてくれる
s.capacity()
let s = String::from("hello");
let t = String::from("world");
println!("s: {:p}", &s);
println!("t: {:p}", &t);
24byte ( 8:pointer / 8: length / 8: capacity ) のズレを確認できる
- 格納先はヒープなので、文字列は可変