休日を謳歌するという挑戦をした。革の手入れ、肉、映画。しかし、渇きは収まらない。
diary
趣味
趣味がないので、何かを積み立てることを考える。
前に、まとめて投げ売りされていた、財布の革の製品を掃除することにした。
今日は2つの財布の汚れをとった。
掃除したらメルカリでまとめて売ろうと思う。
meat and movie
肉を食べたいという欲が強くなり、ケンタッキー・フライド・チキンであのバケツを買った。
そして、Amazonプライムで映画を2本見た。
なんというか、絵にかいたよな休日の過ごし方だな。 (恋人や友人が隣にいないのは残念だが)
thirst
しかし、渇きは収まらない。
自分を見つめているというのは、渇きを覚えているからだ、満たされるということを覚えたい。
水が欲しいのだ。永遠に渇きを覚えるのことのない水を。
今日の勉強
rust
TRPL pp.203-212
- トレイト境界構文
- 複数のトレイト境界を+構文で指定できる
- トレイト境界を関数シグニチャの後のWhere区の中で指定するという構文が用意されている
- impl Trait構文を戻り型のところで使い、そのトレイトを実装する何らかの型を返せる
- 一種類の型を返す場合にのみ使える
- impl Trait構文の実装周りの制約による
- 17章で許容する方法を学ぶ
- 一種類の型を返す場合にのみ使える
- 必要な型はエラーメッセージを見ればわかる
- 自力で調整するところとしては
- Copy Traitを使うか、CloneTraitを使うか
- いずれも使わず、参照を返すことにするか
- 自力で調整するところとしては
- 特定のトレイトを実装する型に多雨するメソッド実装を条件分けできる
- 別のトレイトを実装するあらゆる型に対するトレイト実装(ブランケット実装)ができる
- トレイトとトレイト境界により
- 重複したコードを減らしつつ、
- コンパイラに対し、ジェネリック中谷特定の振る舞いが欲しいことを指定するコードを書くことができ
- トレイト境界の情報を活用して、コンパイラは、コードに使用された具体的な型が正しいふるまいを提供しているかを確認できる。
- 実行時の振る舞いを確認するコードを書かなくともよい。
ライフタイム
- 「参照は全てライフタイムを保持する」
- ライフタイムとは、その参照が有効になるスコープ
- 型と同様、ライフタイムも暗黙的に推論する
- いくつかの異なる方法で関係しているとき、注釈する必要が生じる
- ジェネリックライフタイム引数を使用して、関係を注釈し、実行時に実際の参照が確かに有効であることを保証することを要求する
- 型と同様、ライフタイムも暗黙的に推論する
- ライフタイムの主な目的は、タングリング参照を回避すること
- タングリング参照が起きると、参照するつもりだったデータ以外のデータを参照してしまう