はじめに
#NO IMAGEThe Rust Programming Language 日本語版 - The Rust Programming Language 日本語版
を読んでいる
- スト6をやるために広島に向かっている
- 新幹線でRust
お勉強
#- 引き続きこれをやっている
NO IMAGE高度な型 - The Rust Programming Language 日本語版
メモ
#!の取り合つかいが全く頭に入ってこなかった
let guess: u32 = match guess.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
guess.trim().parse()がResultで帰ってくるってことでしょ?letだから型はコンパイル時に確定しなきゃいけないくて、numの型が帰ってくるようにするとErrは!型で帰ってくる- この型がどの型にも適応できるnever型という理解
- 良さそうな理解な気がする
impl<T> Option<T> {
pub fn unwrap(self) -> T {
match self {
Some(val) => val,
None => panic!("called `Option::unwrap()` on a `None` value"),
}
}
}
unwrapのコードらしい
panic!の型は!なので、match式全体の結果はTと確認します。
- なるほど
Tはvalの型であって、panic!の戻り値は!- よって
valの型、すなわちTにも適応できるということ- たぶんね
valの型はTで、panic!の型は!なので、match式全体の結果はTと確認します。
- 先走って書いたらあったわここに
コンパイラが特定の型の値1つにどれくらいのスペースのメモリを確保するのかなどの特定の詳細を知る必要があるために、 Rustの型システムには混乱を招きやすい細かな仕様があります: 動的サイズ決定型の概念です。
時としてDSTやサイズなし型とも称され、これらの型により、実行時にしかサイズを知ることのできない値を使用するコードを書かせてくれます。
- おお、ここおもろそうだな
そうです。
&strではなく、strは単独でDSTなのです。
- DST is NANI?
DynamicallySizedTypesっぽい- ああ、普通に動的サイズというのを英語にしただけっぽいな
まとめ
#- neverが分かって結構スッキリした
- 応用編だからちょっとカロリーが高いな
- 次ここ