[過去ログ] Rust part24 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
5: デフォルトの名無しさん [] 2024/05/27(月) 19:41:54.75 ID:SG55qLTi(1) AAS
>>1
1(2): デフォルトの名無しさん [sage] 2024/05/27(月) 06:41:26.82 ID:T4AFD1f4(1/3) AAS
公式
外部リンク:www.rust-lang.org
外部リンク:blog.rust-lang.org
外部リンク:github.com

公式ドキュメント
外部リンク:www.rust-lang.org

Web上の実行環境
外部リンク:play.rust-lang.org

※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
外部リンク:doc.rust-lang.org

※Rustを学ぶ際に犯しがちな12の過ち
外部リンク:dystroy.org

※Rustのasyncについて知りたければ「async-book」は必読
外部リンク:rust-lang.github.io

※次スレは原則>>980が立てること

前スレ
Rust part23
2chスレ:tech

49
(1): デフォルトの名無しさん [sage] 2024/06/04(火) 21:25:19.75 ID:iVGm+TdX(1) AAS
std::ptr::addr_eqでdyn同士やdynと通常参照を比較してもいいんだよね
278
(1): デフォルトの名無しさん [] 2024/06/20(木) 12:50:51.75 ID:r+KYpvqW(3/3) AAS
>>276
276(2): デフォルトの名無しさん [sage] 2024/06/20(木) 12:40:54.14 ID:eIGp2b4r(1) AAS
>>274
コンパイル時に展開して検証されるんだから、好ましくね?
実行時に解釈されて挙動が変わるJavaのアノテーションやRubyみたいなのよりよほど好ましいと思うが。
Rubyと比べて好ましいってのはなんの擁護にもなってないんだよな
むしろRubyと比較されうるというディスだろこれ
362: デフォルトの名無しさん [sage] 2024/06/25(火) 15:29:24.75 ID:ZtCD4zFU(2/2) AAS
>とりあえずは動くところまで持っていきやすい言語

Rustも変な事しなければとりあえずは動く
C/C++みたいに一見動いてるフリしてメモリ壊してたりに気付かない方が有害
387: デフォルトの名無しさん [sage] 2024/06/26(水) 23:26:44.75 ID:skjSHmL1(1) AAS
Rust言語を知らないから見た目のキーワード批判しかできないのだ
683
(1): デフォルトの名無しさん [sage] 2024/07/09(火) 20:49:10.75 ID:sTXYSGuF(1/2) AAS
簡単な話だよな
オブジェクト指向プログラミングで
例えばクラスを使うと
LSPに違反する二つの型のコード例を容易に作れてしまう
つまりクラスは本質的に欠陥品なんだよ

Rustのトレイトを使うと
LSPに違反する二つの型のコード例を作ることができない
つまりRustのトレイトは優れた方式なんだよ
740
(1): デフォルトの名無しさん [sage] 2024/07/11(木) 00:30:41.75 ID:sJ7PGs8/(1/3) AAS
>>732
732(2): デフォルトの名無しさん [] 2024/07/10(水) 22:01:49.20 ID:HryWiaEt(4/4) AAS
>>721
「インタフェースを定義し、それに基づいて実装する」という設計なら問題ないのだけど、
これは「あるクラスに依存していたコード群が新しいクラスでも動くようにするため」という発想になっており、大規模な開発だとこのやり方はだいたい失敗するよという話

例を書きづらいけど、例えば「A社製の装置を制御するアプリ」があったとして、
新しく「B社製の装置も制御できるようにする」という追加の開発案件があったとする。
この時点ではまだADeviceControllerは抽象化されておらず、A社装置の仕様に強く依存したクラスであるとする。
これを「ADeviceController が持つメソッドを IDeviceController として取り出し、それを BDeviceControllerにも実装させる」とすると確実に事故る。
「B社装置にだけある機能Xを呼びたい」「A社装置にあった機能YがB社装置にはない」といった違いを吸収しきえれず、インタフェースがぐちゃぐちゃになったり、「呼んでも何もしない」とかの形で誤魔化したり、呼び出し元でサブクラスの判定が必要になったりする

こうならないようにするには
a. 具体的な機器に依存しない、機器の振る舞いを適切に抽象化したインタフェースを定義する
b. 代数的データ型を使う
という方法があり、 Rust では b. の方法も使いやすいので、個人的にはそこが良いなと思う
一般的に何らかの上位層と下位層があるときに
Rustではその界面にtraitを置いて
上位層はそのtraitを利用する側
下位層はそのtraitを実装する側
とSILIDのDIP (Dependency Inversion Principle)にするのがそのa.だね
もしクラスでやるときは抽象化を徹底した上で色んな注意が必要になるところ
Rustは自然にコーディングできてありがたいね
898
(1): デフォルトの名無しさん [sage] 2024/07/19(金) 23:52:20.75 ID:8WlCJE3Q(1) AAS
>>897
897(3): デフォルトの名無しさん [] 2024/07/19(金) 23:30:11.35 ID:rC6z5NUh(2/2) AAS
>>886
let x; HashMap::<_, _> = vec.try_into()?;

>>889
+1
エラーとなりますた
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.043s