[過去ログ]
Rust part24 (1002レス)
Rust part24 http://mevius.5ch.net/test/read.cgi/tech/1716759686/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
469: デフォルトの名無しさん [sage] 2024/06/29(土) 15:34:20.66 ID:KH8yb7Br それまで参照を持たなかった構造体にメンバとして参照を持たせると、型にジェネリックライフタイムが付いて、その型の使用箇所全部でライフタイムを書く必要がある さらに悪いことに、実際のところこれは必要ではなく、ライフタイムを書かなくても省略されていると見なされてコンパイルが通ることもある しかしこれでは意図通りのライフタイムになっていないことが多く、その型の使用箇所を増やしたときに初めてそのことに気づくことになる Rust特有のリファクタリングしづらさは、あるよ http://mevius.5ch.net/test/read.cgi/tech/1716759686/469
474: デフォルトの名無しさん [sage] 2024/06/29(土) 16:52:22.95 ID:KH8yb7Br >>471 「ライフタイム注釈が'aになるか'_になるか省略できるか」は、すべての使用箇所ごとに以下を検討したうえで決まる * 追加するライフタイムは既存のライフタイムと同じであるべきか * 既存と同じであるべきでないなら、そのライフタイムはどこで宣言すべきか(impl? fn? トレイトや構造体?) それで1つの型がリファクタリングできたところで、 * トレイトや構造体にジェネリックライフタイムパラメータを追加した場合、そいつにも同じ作業がいる。最初から繰り返し ここまでのすべての作業に尋常でない集中力が必要になる 繰り返しの中でライフタイムの宣言箇所の選択が誤っていたことに後で気づいたりすると悲惨だ 「エラーのあるコードをgit commitしない方が良い」という思い込みを捨て、選択を必要とするタイミングでgitに記録するようにして、 作業効率は安定はするようになったが、それでも作業を捨てるというのは気が滅入る 「あ、この関数の引数にライフタイム追加することになるけど、後で戻り値にもライフタイム追加することになるな」なんて思っても一挙に作業してはいけない 少なくとも自分の頭では作業の段取りを崩すだけだった そしてここまでを全集中して完了してコンパイルを通すところまで持って行けても、クレート外の使用箇所でおかしなことにならないことは保証できない ボローチェッカーは書かれている使用法が妥当であるかどうかしか検証しないからだ こっちは体験談として言っているんだから、机上の空論を弄するのはもうやめなさい http://mevius.5ch.net/test/read.cgi/tech/1716759686/474
475: デフォルトの名無しさん [sage] 2024/06/29(土) 16:58:20.78 ID:KH8yb7Br Rustはライフタイムさえ正しく書けていれば本当に有用な助けを与えてくれる しかしライフタイムを正しく書くための助けはほとんど与えてくれないので、自分で書く必要があるときには上と同じような期待をしてはいけない http://mevius.5ch.net/test/read.cgi/tech/1716759686/475
478: デフォルトの名無しさん [sage] 2024/06/29(土) 17:17:23.37 ID:KH8yb7Br >>477 いいからこれでも読んでろ https://github.com/pretzelhammer/rust-blog/blob/master/posts/translations/jp/common-rust-lifetime-misconceptions.md > Rustのトレイトオブジェクトへのライフタイム省略ルールはどんな状況でも正しいというわけではない > Rustはプログラムの意味についてプログラマよりも知っているわけではない > Rustのコンパイラが吐くエラーメッセージでおすすめされる修正はコンパイルが通るようにするが、コンパイルが通り、 かつ プログラムへの要求をちゃんと満たしたものするわけではない http://mevius.5ch.net/test/read.cgi/tech/1716759686/478
485: デフォルトの名無しさん [sage] 2024/06/29(土) 20:23:11.41 ID:KH8yb7Br >>469 これか…… https://github.com/rust-lang/cargo/issues/7342 > I think the answer here is "Alex thought it was fun to avoid RefCell and Mutex", there's no real technical motivation. 「cloneを避ける/ロックを避ける/参照カウンタのコストを避ける」みたいなゼロコスト主義も節度を持ってやれってことね とりあえず「型のジェネリックライフタイム引数を変更するのは多大なコストがかかる」という理解は合っていると思っておくことにするか http://mevius.5ch.net/test/read.cgi/tech/1716759686/485
486: デフォルトの名無しさん [sage] 2024/06/29(土) 20:23:40.20 ID:KH8yb7Br >>481だった http://mevius.5ch.net/test/read.cgi/tech/1716759686/486
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.034s