2021-09-01から1ヶ月間の記事一覧

隻眼の少女

単行本発売日: 2010年 著者: 麻耶 雄嵩 (まやゆたか) まさかの結末。まさかの復讐劇。 キャッチコピーの「ここまで恐ろしいヒロイン」という意味を知りたくてディープに読みすすめてしまったせいか結末のショックがつらすぎた。 硝子の塔の殺人(知念実希人…

参照型 &T

参照型 &T 値を所有していないことを表す型。 &演算子(Borrow演算子)によって生成する。 借用 Rustでは、&演算子によって参照型を生成することを「値を借用する」という。 let a = String::from("a"); // 変数aの値を借用する let b: &String = &a; 値のライ…

自動参照外し (Auto-dereferencing)

元ネタ https://sodocumentation.net/rust/topic/2574/auto-dereferencing The dot operator ドット演算子 .演算子によって、コンパイル時に必要なだけの*が挿入され、自動で参照外しが行われる。 Deref型強制の一種。 let mut name: String = "Hello World"…

パターンマッチ ".." と "_"の違い

元ネタ Difference between ".." and "_" in match patterns. : rust _ 一つの値のみにマッチする .. 複数の値にマッチする let v = (1, 2, 3); match v { (1, 2, _) => println!("1, 2, _"), (1, ..) => println!("1, .."), (..) => println!(".."), }

Option<T>

Option enum Option<T> { None, Some(T), } boolに変換 is_some(&self) is_none(&self) 値の取り出し T expect(self), msg: &str) -> T unwrap(self) -> T unwrap_or(self, default: T) -> T unwrap_or_else<F>(self, f: F) -> T where F: FnOnce() -> T Result<T, E> ok</t,></f></t>…

所有権と借用

所有権 Ownership 所有権とは 所有権と値のライフスコープ 所有権の移動 コピーセマンティクス Copyトレイト実装型 基本型 (bool, i32, ...) 参照型 ムーブセマンティクス 所有権とは 値を保持できる変数は、必ず1つであるという制約のこと。 #[derive(Debu…

ポリモーフィズム with トレイトオブジェクト

ポリモーフィズム (Polymophism) ポリモーフィズム in Rust deepLによる翻訳 ポリモーフィズム 多くの人にとって、ポリモーフィズムは継承と同義語です。しかし、実際にはもっと一般的な概念であり、複数の型のデータを扱うことができるコードを指します。継…

トレイトオブジェクト

Trait objects 動的サイズ決定型 (DSTs) トレイトオブジェクトは、以下のポインタを持つワイドポインタ(動的サイズ決定型) 値へのポインタ 仮想メソッドテーブル トレイトオブジェクトの形 Box<dyn SomeTrait> &dyn SomeTrait トレイトオブジェクトの目的 動的ディスパッチ</dyn>…

ジェネリクス関数 - impl trait引数とトレイト境界の違い

元ネタ rust - What are the differences between an impl trait argument and generic function parameter? - Stack Overflow 回答 impl trait引数は、トレイト境界に脱糖(desugar)される。(ゆえにトレイト境界の糖衣構文である) したがって以下は同じ。 t…

anyhowを使う

anyhow::Error https://docs.rs/anyhow/1.0.44/anyhow/struct.Error.html 動的エラー型を包み込んだエラー型。 Box<dyn std::error::Error>との違い 静的な型 もどり道(backtrace)を保証する narrow pointer Display representations Display 表し方 esprintln!("{}", err) undering</dyn>…

anyhowメモ

anyhowのメリット エラーに説明を追加できる anyhow::Result<T>は、エラーの伝播ルートをスタックトレースとして出力してくれる anyhowがない場合 Result<T, E> と std::error::Errorトレイトを使う。 fn count_words<R: Read>(input: &mut R) -> Result<u32, Box<dyn Error>> { let reader = BufRe</u32,></r:></t,></t>…

Borrow<Borrowed>とToOwnedトレイト

Borrow<Borrowed>トレイト - Borrowed型を借用できることを表す ToOwnedトレイト - Borrow<Borrowed>型を実装すると自動実装される use std::borrow::Borrow; #[derive(Debug)] struct ToolBox(Tool); #[derive(Debug)] struct Tool; impl Borrow<Tool> for ToolBox { fn borrow(&self)</tool></borrowed></borrowed>…

葉桜の季節に君を想うということ

発行: 2003年 著書: 歌野晶午 まさかのつながりからの展開にびっくり。 十角館の殺人を彷彿させる本格ミステリーであったが、最後の最後までミステリー小説なのかどうか分からなかった。 読後、タイトルを読み、今や恋人の帰りを待っている主人公の姿を思い…

向日葵の咲かない夏

著書: 道尾秀介 発行: 2008年9月1日 いわゆる叙述トリックを使ったミステリ小説で、最後は嫌な気持ちになるイヤミス。 こういったミステリの醍醐味は、 最後まで読んでタネが分かった上で、また読み直すことできることだと思う。 道尾秀介の本は、「カラスの…