struct User {
username: String,
email: String,
sign_in_count: u64,
active: bool,
}
ははーん。Rust の struct とは PHP でいうと class だな。完全に理解した!
なんて考えた自分が甘かった
struct にはそれ単体ではメソッドが定義できない。。。
メソッド定義をしたいならば impl を利用すると
さらに継承 extend はなくて トレイトを利用して振る舞い(絶対に定義しておきたいメソッド)を指定すると この辺りは インターフェース的な感じなのかな。PHPに置き換えて理解をしようがそろそろ通用しなくなってきた感がすごい
もちろん struct にも所有権の概念はバリバリに適応される
構造体データの所有権
リスト5-1のUser構造体定義において、&str文字列スライス型ではなく、所有権のあるString型を使用しました。 これは意図的な選択です。というのも、この構造体のインスタンスには全データを所有してもらう必要があり、 このデータは、構造体全体が有効な間はずっと有効である必要があるのです。
しかし、ライフタイムという機能を利用することで、データの参照を渡すことも可能となる
構造体に、他の何かに所有されたデータへの参照を保持させることもできますが、 そうするにはライフタイムという第10章で議論するRustの機能を使用しなければなりません。 ライフタイムのおかげで構造体に参照されたデータが、構造体自体が有効な間、ずっと有効であることを保証してくれるのです。
学べば学ぶほど新出単語がでてくるんや
やっぱりコード書きながらでないと概念の理解がピンとこなくなってきている
とは言え、見過ごすことができない、重要な単語が散見されてきているので、ぐっとこらえてまずはチュートリアルを進めていってみる