2022-05-01から1ヶ月間の記事一覧
too many linked list っていうRustで書きづらいようなデータ構造を頑張って書いて行こうぜみたいなblog postを最近読んでいた. その中ででてきて面白かったのが Option::take() という関数. /// Takes the value out of the option, leaving a [`None`] in …
copy, cloneあたりの記事を読んで、そのメモ 意外と基礎が抜けていたり. Moveについて moveは基本 shallow copy. objectごとにcopyしたりはしない Copyについて コンパイラによって自動的に実装される. stack上にcopyが置かれる heapを指している(ものを含ん…
最近下記の記事を読んで、Immutable Stackなるものを知った. qiita.com この記事の本質はArc/Rcの仕組みを紐解くところあるのだけれど、Immutable Stackの概念が妙に新鮮かつ(状態を持たずにstackを実現している部分が)とても美しいと思った. この記事を参考…
突然ですが、 struct A {} impl A { fn foo(self) -> Self{ Self{} } } struct B { a: A } impl B { fn new(a:A) ->Self { Self {a: a} } fn baz(&self) { let _ = self.a.foo(); } } このコードは L15で次のようなコンパイルエラーを吐きます. cannot move …
どうも、最近RustのCloneの使用を極力減らしていきたい症候群に駆られてるmox692です. 内容はタイトルのままです. Rustを触り始めて間もない頃はVecに対して安易に↓のようなコードを書きがちじゃないでしょうか. #[derive(Clone, Copy)] struct A{} fn main(…
「Rustのコードを読んでいるとたまに出会うけど、直接今書いてるコードとは関係ないしまあ理解は後回しでいいか...」的な感じで、自分の中で理解を後回しにしていた概念(主にTrait)達を少しまとめようと思う. std::borrow::Borrow std::borrow::Cow std::bor…
rustのthread生成関数、std::thread::spawn()にて、docコメントに以下の記述があった. /// In terms of [atomic memory orderings], the completion of the associated /// thread synchronizes with this function returning. In other words, all /// oper…