Open6
Rust勉強していて『え!?何これ???』っと感じたスレ
「r#」って何?
キーワード(try/catch/async などコンパイラで使用済みの識別子)をraw identifier
として宣言することができる!
type
を構造体の中で宣言しようとしたら↓のエラーを吐いた
エラー文
error: expected identifier, found keyword `type`
--> src/main.rs:79:5
|
79 | type: String,
| ^^^^ expected identifier, found keyword
|
help: escape `type` to use it as an identifier
|
79 | r#type: String,
| ++
error: expected identifier
--> src/main.rs:79:5
|
79 | type: String,
| ^^^^
Stringと&str の違い
Rustには主要な文字列型が二種類あります。&str と Stringです。 まず &str について説明しましょう。 &str は「文字列スライス」と呼ばれます。 文字列スライスは固定サイズで変更不可能です。文字列スライスはUTF-8のバイトシーケンスへの参照です。
https://doc.rust-jp.rs/the-rust-programming-language-ja/1.6/book/strings.html
日本語で調べている前任者
わかりやすい内容やったな
String:from("hoge")とは?
let s1: String = String::from("hello world");
let s2: Box<str> = s1.into_boxed_str();
let s3: String = String::from(s2);
assert_eq!("hello world", s3)
固定長文字列(&'static str
)を可変長文字列(String)に変換し、再度固定長文字列(&'static str
)に変換している。したがって、String:from("hoge")
はto_string
と同じ動作をしているのかな?
Boxって?
Rust(大半の言語は)スタック領域にデータが保存されるため、ボックス化しヒープ領域にデータを保存するのがBox。