公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
公式ドキュメント
https://www.rust-lang.org/learn
Web上の実行環境
https://play.rust-lang.org
※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※次スレは原則>>980が立てること
前スレ
Rust part26
https://mevius.5ch.net/test/read.cgi/tech/1726838318/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
探検
Rust part27
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2024/12/02(月) 22:32:50.31ID:D+1pIyvG268デフォルトの名無しさん
2025/02/09(日) 11:17:45.05ID:lISaYUpW >>266
そこで言う当面はってのは3-4年前の状況かな
今はもう準備も整って、Mac用のAsahiLinuxとかAndroidとかフォークしてる勢には普通に入ってる段階
だからそろそろ本体にって話になってるわけだけど、拒絶されるなら彼らはフォークに戻っていくだけだとは思う
そこで言う当面はってのは3-4年前の状況かな
今はもう準備も整って、Mac用のAsahiLinuxとかAndroidとかフォークしてる勢には普通に入ってる段階
だからそろそろ本体にって話になってるわけだけど、拒絶されるなら彼らはフォークに戻っていくだけだとは思う
269デフォルトの名無しさん
2025/02/09(日) 11:46:40.81ID:SqO2AyXb270デフォルトの名無しさん
2025/02/09(日) 12:46:41.58ID:LgxLklST 内部の問題をSNSつかって文句言うなアホ
お前が問題じゃ
お前が問題じゃ
271デフォルトの名無しさん
2025/02/09(日) 13:50:57.72ID:CgBIGE40 ここや他のスレでRustに意味のわからん難癖つける人が
いるのは5ちゃん民度のせいではないのがわかった
いるのは5ちゃん民度のせいではないのがわかった
272デフォルトの名無しさん
2025/02/09(日) 14:20:31.41ID:o7IahYRC C++に似ている部分はC++と同じ程度に批判される
それとハイブリッド的な部分
100%ガソリンで動くか100%電気で動くかどっちかにしろという
それとハイブリッド的な部分
100%ガソリンで動くか100%電気で動くかどっちかにしろという
273デフォルトの名無しさん
2025/02/09(日) 16:28:50.86ID:2Eyl255N >>268
該当コード用のメンテナがRustを使いこなすようになるか、専用のメンテナが別に現れるか、現在のメンテナが引退してRust推進のメンテナに代わるまでじゃない?
これはメンテナの複雑性管理&管理ポリシーの問題だから、普及具合とかはあんまり関係ない。
該当コード用のメンテナがRustを使いこなすようになるか、専用のメンテナが別に現れるか、現在のメンテナが引退してRust推進のメンテナに代わるまでじゃない?
これはメンテナの複雑性管理&管理ポリシーの問題だから、普及具合とかはあんまり関係ない。
274デフォルトの名無しさん
2025/02/09(日) 23:42:15.23ID:yWuHVaf1 色んなものがRust製になっていく中
最後まで残りそうなのが巨大でモノリシックなカーネルとブラウザになりそうだな
最後まで残りそうなのが巨大でモノリシックなカーネルとブラウザになりそうだな
275デフォルトの名無しさん
2025/02/10(月) 00:33:23.09ID:vC/tdt5D 日本の古文漢文は残らないかもしれないが西洋では全部保存していて選択肢が増えるだけ
だから、向こうが世界の中心みたいな空気になる
だから、向こうが世界の中心みたいな空気になる
276デフォルトの名無しさん
2025/02/10(月) 16:53:59.27ID:NarMF1Jn firefoxはまだrust製にはならんの?
277デフォルトの名無しさん
2025/02/10(月) 17:38:09.01ID:cWC6BpGk Linux カーネルは保守的な方針だろ。
数年前まで C89 が前提だったんだぞ。
この速度感で考えるなら Rust 導入なんてまだまだ時期尚早じゃね?
数年前まで C89 が前提だったんだぞ。
この速度感で考えるなら Rust 導入なんてまだまだ時期尚早じゃね?
278デフォルトの名無しさん
2025/02/10(月) 19:19:29.76ID:CLC139Pw Firefoxのレンダリングエンジンは大分前からRust製(Servo)でしょ
279デフォルトの名無しさん
2025/02/10(月) 19:49:30.60ID:+iqVWpvf280デフォルトの名無しさん
2025/02/10(月) 22:57:20.26ID:K8Z0rKJe 錆→癌
281デフォルトの名無しさん
2025/02/10(月) 22:59:57.28ID:u4cWXaji Mozillaお金なさすぎて色々と切り捨てて
RustもRust Foundationへ移管されたもんな
結果的にRustにとっては中核が安定してラッキーになったけどさ
> 2020年にMozillaがすべてのServo開発者を解雇した後、プロジェクトのガバナンスはLinux Foundation Europeに移管された。
> 開発作業は公式には同じGitHubリポジトリで続けられており、プロジェクト自体は完全にボランティア主導です。
RustもRust Foundationへ移管されたもんな
結果的にRustにとっては中核が安定してラッキーになったけどさ
> 2020年にMozillaがすべてのServo開発者を解雇した後、プロジェクトのガバナンスはLinux Foundation Europeに移管された。
> 開発作業は公式には同じGitHubリポジトリで続けられており、プロジェクト自体は完全にボランティア主導です。
282デフォルトの名無しさん
2025/02/10(月) 23:42:58.20ID:vC/tdt5D C/C++その他の知識を蒸留してないわけがないから
コストもコスパもないんだよ
コストもコスパもないんだよ
283デフォルトの名無しさん
2025/02/12(水) 22:57:39.73ID:f3u+GZc6 Pointers (this includes values of reference type) in Rust have two components.
- The pointer's "address" says where in memory the pointer is currently pointing.
- The pointer's "provenance" says where and when the pointer is allowed to access memory.
We have to know not only the address the pointer points to,
but also track which other pointer(s) it is "derived from".
Provenance is useful because it allows powerful optimizations.
Provenance can affect whether a program has undefined behavior.
- The pointer's "address" says where in memory the pointer is currently pointing.
- The pointer's "provenance" says where and when the pointer is allowed to access memory.
We have to know not only the address the pointer points to,
but also track which other pointer(s) it is "derived from".
Provenance is useful because it allows powerful optimizations.
Provenance can affect whether a program has undefined behavior.
284デフォルトの名無しさん
2025/02/16(日) 23:45:42.12ID:aPxhKLjT Rust Tokyo 2024 開催レポート
https://gihyo.jp/article/2024/12/rust-tokyo-2024-report
https://gihyo.jp/article/2024/12/rust-tokyo-2024-report
285デフォルトの名無しさん
2025/02/21(金) 06:52:59.68ID:p6I2RufL edition = "2024" が来たね
286デフォルトの名無しさん
2025/02/25(火) 13:22:53.51ID:XvTpfGzl287デフォルトの名無しさん
2025/02/25(火) 13:50:37.48ID:z5mNSc8+ 生メモリいじくるのが好きな人たちがいきなりrustやれって言われたらきつい気持ちはわかる
どうせメンテーなんてみんなジジイなんだし
どうせメンテーなんてみんなジジイなんだし
288デフォルトの名無しさん
2025/02/25(火) 15:08:04.83ID:Uj70bClX rustが嫌でもやれなんて言ってないが
289デフォルトの名無しさん
2025/02/25(火) 16:25:22.46ID:ixFc3NBv Linusの今回の発言は明瞭で
・Cだけ触りたい人はそのままRustを覚えなくてOK
・その代わりRustについて口を挟む権利はない
・CのAPIをその利用者は自由に使えてメンテナといえども用途用法に口を挟む権利はない
したがって今回もめていた「CのAPIの上にRustのAPIを設ける件」について
Cだけ触りたいメンテナは口を挟む権利はなくパッチを拒否する権利もない、ということ
大方の人々が考えていた通りに決着
・Cだけ触りたい人はそのままRustを覚えなくてOK
・その代わりRustについて口を挟む権利はない
・CのAPIをその利用者は自由に使えてメンテナといえども用途用法に口を挟む権利はない
したがって今回もめていた「CのAPIの上にRustのAPIを設ける件」について
Cだけ触りたいメンテナは口を挟む権利はなくパッチを拒否する権利もない、ということ
大方の人々が考えていた通りに決着
290デフォルトの名無しさん
2025/02/25(火) 17:47:40.26ID:z5mNSc8+ 口を出せない=メンテナ失格ということと受け取った
291デフォルトの名無しさん
2025/02/25(火) 18:17:51.25ID:AwfAD5GP かつてカーネルを正しく修正した結果として (保証してない挙動に依存した) 間違ったアプリケーションのいくつかがまともに動かなくなったことがある。
そのときに Linux の理念としては技術的合理性でユーザー体験を損なってはならないということで間違っているアプリケーションに合わせて互換性が維持された。
ユーザは一方的な利用者に過ぎずカーネルに口出ししないなんてことはない。
絶対に、絶対に、絶対に、カーネルに口出しするよ。
まあそれが良いか悪いかは知らんけどな。
そのときに Linux の理念としては技術的合理性でユーザー体験を損なってはならないということで間違っているアプリケーションに合わせて互換性が維持された。
ユーザは一方的な利用者に過ぎずカーネルに口出ししないなんてことはない。
絶対に、絶対に、絶対に、カーネルに口出しするよ。
まあそれが良いか悪いかは知らんけどな。
292デフォルトの名無しさん
2025/02/25(火) 18:41:48.14ID:XvTpfGzl293デフォルトの名無しさん
2025/02/26(水) 04:07:17.14ID:m7ecN2qb >>290
そういうデマを言うやつがいるとコミュニティー全体が嫌われるから止めるべき。
Linusが言っているのはせいぜい「Rustコードのメンテナじゃないだろ」ぐらいの話で、Linuxメンテナ失格とは全く言っていない。むしろメンテナが自分のメンテナンス範囲をCコードだけにするのを肯定している。
今回の件も、C APIユーザーとしてのRustコードがCコードとは独立した形で別のメンテナにメンテナンスされるんじゃないんかね。
そういうデマを言うやつがいるとコミュニティー全体が嫌われるから止めるべき。
Linusが言っているのはせいぜい「Rustコードのメンテナじゃないだろ」ぐらいの話で、Linuxメンテナ失格とは全く言っていない。むしろメンテナが自分のメンテナンス範囲をCコードだけにするのを肯定している。
今回の件も、C APIユーザーとしてのRustコードがCコードとは独立した形で別のメンテナにメンテナンスされるんじゃないんかね。
294デフォルトの名無しさん
2025/02/26(水) 19:09:22.06ID:ixFc3NBv 着実にRust APIを増やしていこう
脱libc
脱libc
295デフォルトの名無しさん
2025/02/27(木) 14:26:32.38ID:VQNvJTxh Rustは清書用
296デフォルトの名無しさん
2025/02/27(木) 21:14:53.56ID:z3E1gBHI じゃあRoughって言語も要るな
297デフォルトの名無しさん
2025/02/27(木) 23:34:31.56ID:8PL54Hpa Rustはリファクタリングでの安定度も他より極めて高くて開発効率が良いので
まずは雑に書いて後から可読性を上げたり拡張性を上げたり実行効率性を上げたり普通に行われているね
まずは雑に書いて後から可読性を上げたり拡張性を上げたり実行効率性を上げたり普通に行われているね
298デフォルトの名無しさん
2025/02/28(金) 08:15:36.47ID:rekq6zs6 >>296
クレート境界をダックタイピング化した言語が欲しいわ。
クレート境界をダックタイピング化した言語が欲しいわ。
299デフォルトの名無しさん
2025/02/28(金) 12:17:20.44ID:ydxSDGT7300デフォルトの名無しさん
2025/02/28(金) 12:19:57.96ID:3/BLzMLJ >>298
それがC++かもしれませんね
それがC++かもしれませんね
301デフォルトの名無しさん
2025/02/28(金) 22:27:33.84ID:wOIfhSFi >>298
ダックタイピングは各異なる型を統一的に安全に呼び出せる保証が人任せだから使うべきでない
トレイト境界を指定すれば安全が保証されるがそれはトレイトすなわち他言語で言うところのインターフェースに近い存在を仮定していてダックタイピングとは言い難い
ダックタイピングは各異なる型を統一的に安全に呼び出せる保証が人任せだから使うべきでない
トレイト境界を指定すれば安全が保証されるがそれはトレイトすなわち他言語で言うところのインターフェースに近い存在を仮定していてダックタイピングとは言い難い
302デフォルトの名無しさん
2025/02/28(金) 22:51:15.56ID:OmeBN0rd303デフォルトの名無しさん
2025/02/28(金) 23:05:54.93ID:aDguz5rE >>298
Go だと型があるインターフェイスを満たす (満たすつもり) かどうかは明示的な宣言がない。
インターフェイスで定義されたのと同じメソッドを持っていればそのインターフェイスを実装したものと見做される。
Go だと型があるインターフェイスを満たす (満たすつもり) かどうかは明示的な宣言がない。
インターフェイスで定義されたのと同じメソッドを持っていればそのインターフェイスを実装したものと見做される。
304デフォルトの名無しさん
2025/02/28(金) 23:49:44.86ID:wOIfhSFi >>302
まずその共通部分が存在する保証がない
次に共通部分があったとしてもその部分への任意のアクセスメソッドが完全に同一である保証がない
さらにダックタイピングで用意されるメソッドがその共通部分のみにアクセスされる保証がない
共通部分型方式には問題が山積み
一方でトレイト境界を用いると
共通部分を持たなくても安全に共通メソッドを増やすことができる
まずその共通部分が存在する保証がない
次に共通部分があったとしてもその部分への任意のアクセスメソッドが完全に同一である保証がない
さらにダックタイピングで用意されるメソッドがその共通部分のみにアクセスされる保証がない
共通部分型方式には問題が山積み
一方でトレイト境界を用いると
共通部分を持たなくても安全に共通メソッドを増やすことができる
305デフォルトの名無しさん
2025/03/01(土) 00:09:58.46ID:k1Z2LiOl 相変わらず日本語不自由だな
306デフォルトの名無しさん
2025/03/01(土) 08:37:01.16ID:IXdCHP3R 言語によるとしか言えない
その言語にある道具なら、それが便利なら使って問題ないと思う
C++だと標準ライブラリでもダックタイピングをごく普通に使うけど、それに文句を言う人もいないでしょ
その言語にある道具なら、それが便利なら使って問題ないと思う
C++だと標準ライブラリでもダックタイピングをごく普通に使うけど、それに文句を言う人もいないでしょ
307デフォルトの名無しさん
2025/03/01(土) 08:57:54.01ID:fWE8MQKS C++のような古くてダサい言語は比較する意味ないだろ
ダサくて自己責任となるダッチタイピングはお似合いだが
ダサくて自己責任となるダッチタイピングはお似合いだが
308デフォルトの名無しさん
2025/03/01(土) 09:10:51.88ID:J1DdG5rG Rust書きやすいって言ってるのは大体c++から移った人間でそういう人がここに集ってる
GC付きの言語から来たらそこまでは思わない
GC付きの言語から来たらそこまでは思わない
309デフォルトの名無しさん
2025/03/01(土) 09:47:12.55ID:+k5QM36w310デフォルトの名無しさん
2025/03/01(土) 11:24:22.93ID:dZ2eBKvG >>304 に賛成
311デフォルトの名無しさん
2025/03/01(土) 11:25:33.81ID:dZ2eBKvG >>306
便利さと安全性は独立してるからな
便利さと安全性は独立してるからな
312デフォルトの名無しさん
2025/03/01(土) 11:39:32.69ID:LIMOz2LM313デフォルトの名無しさん
2025/03/01(土) 13:10:29.22ID:UmJa16uz A:「〇〇な言語があったらいいのに」
B:「言語によるとしか言えない」
A:「・・・」
B:「言語によるとしか言えない」
A:「・・・」
314デフォルトの名無しさん
2025/03/01(土) 18:25:43.33ID:iHXAtSJa Structural Typingでバイナリ境界を超えて新しいメソッドを追加できるようにしてしまうと衝突時のデメリットがメリットを上回る
Rustにcoherenceがあるのと同じ
Rustにcoherenceがあるのと同じ
315デフォルトの名無しさん
2025/03/01(土) 22:44:41.75ID:qVuk4Ae3 >>308
GCの有無は関係ない
異なる型に対するコードの共通化つまりジェネリクスの話
例えばクラスを使えば同じ基底を継承する派生同士は異なる型でも共通のメソッドやプロパティを使える
しかし同じクラス継承の関係しか扱えないのは制約がキツく各機能毎に継承で多重クラス継承など問題が多い
一方でダッチタイピングや構造的サブタイピングは無関係な型同士でも同じメソッドやプロパティがあるだけで暗黙に使える
しかし互換性がなく偶然同じメソッドやプロパティを持つ同士の利用をエラーにできない問題や暗黙であるため複雑化してくると分かりにくくなるなど問題が多い
そこで機能毎にインターフェース宣言と各型でのインターフェース利用宣言することで諸問題を解決し安全で保守しやすいコードにすることができる
そしてインターフェース名(機能名)が付くことで複数の機能の列挙や関係も宣言できるようになる
Rustではトレイトと称する
GCの有無は関係ない
異なる型に対するコードの共通化つまりジェネリクスの話
例えばクラスを使えば同じ基底を継承する派生同士は異なる型でも共通のメソッドやプロパティを使える
しかし同じクラス継承の関係しか扱えないのは制約がキツく各機能毎に継承で多重クラス継承など問題が多い
一方でダッチタイピングや構造的サブタイピングは無関係な型同士でも同じメソッドやプロパティがあるだけで暗黙に使える
しかし互換性がなく偶然同じメソッドやプロパティを持つ同士の利用をエラーにできない問題や暗黙であるため複雑化してくると分かりにくくなるなど問題が多い
そこで機能毎にインターフェース宣言と各型でのインターフェース利用宣言することで諸問題を解決し安全で保守しやすいコードにすることができる
そしてインターフェース名(機能名)が付くことで複数の機能の列挙や関係も宣言できるようになる
Rustではトレイトと称する
316デフォルトの名無しさん
2025/03/01(土) 22:55:40.18ID:J1DdG5rG llmの3B当たりが吐き出す文章みたいで何を言ってるのか意味不明だな
317デフォルトの名無しさん
2025/03/02(日) 00:27:51.62ID:yD3mmOcG 丸一日調べてこれとか泣けてくるな
ついでにRustのトレイト問題も調べとけよ
ついでにRustのトレイト問題も調べとけよ
318デフォルトの名無しさん
2025/03/02(日) 08:35:08.13ID:Na6YXFfW319デフォルトの名無しさん
2025/03/02(日) 15:32:34.86ID:gL5X58/w >>312
少なくとも君は馬鹿だよ
少なくとも君は馬鹿だよ
320デフォルトの名無しさん
2025/03/02(日) 17:14:53.44ID:ZyJLqNmz わからんけどtypescriptやれば
321デフォルトの名無しさん
2025/03/02(日) 18:00:38.37ID:4Ag5PO4h ま人生一度は型厨になるのは仕方ない
322デフォルトの名無しさん
2025/03/02(日) 18:29:41.49ID:JmtuUveA ダックタイピングは動的か静的かに関わらずデメリットが多すぎて使うべきではないよ
唯一のメリットはinterface宣言が不要だけどこれが害悪を招いちゃう
interface名がないから可読性が悪く保守性も低いのはもちろん利用方法に制限も
唯一のメリットはinterface宣言が不要だけどこれが害悪を招いちゃう
interface名がないから可読性が悪く保守性も低いのはもちろん利用方法に制限も
323デフォルトの名無しさん
2025/03/02(日) 19:02:58.00ID:Q0x8LaN0 静的なダックタイピングにはinterface宣言もinterface名もあるやろ
324デフォルトの名無しさん
2025/03/02(日) 19:17:03.00ID:JmtuUveA325デフォルトの名無しさん
2025/03/02(日) 21:10:41.61ID:JAzjPHpU ubyの罪は重い
326デフォルトの名無しさん
2025/03/02(日) 21:55:50.48ID:4ZT2iFI9 Rustってまだオワコンになってなかったんだな
327デフォルトの名無しさん
2025/03/02(日) 22:12:16.30ID:vq+w9eu/ 構造に頼るよりも、ジェネリック関数でトレイト境界で制約かけた方がRustっぽい気がする。
なんとなく。
なんとなく。
328デフォルトの名無しさん
2025/03/02(日) 22:50:29.46ID:RayeYp/T >>324
上に出てきてるように構造的部分型(Strructural Subtyping)を含めた話
まあ俺もStrructural Subtypingを静的ダックタイピングと呼ぶのは
誤解を招きやすいからあまり賛同しないがそこは問題じゃないでしょ
上に出てきてるように構造的部分型(Strructural Subtyping)を含めた話
まあ俺もStrructural Subtypingを静的ダックタイピングと呼ぶのは
誤解を招きやすいからあまり賛同しないがそこは問題じゃないでしょ
329デフォルトの名無しさん
2025/03/02(日) 23:00:19.17ID:RayeYp/T330デフォルトの名無しさん
2025/03/02(日) 23:17:39.99ID:g7i6E9Hi 共通する構造&機能がある時に
・interface名(Rustではtrait名)を付けて宣言するか
・名付けずにダックタイピングするか
の違いが最も大きい
後者は様々な点で劣る
両者の中間的な位置付けにいるのがGo
Goでは各型に対するinterface実装宣言を省略できてしまうため
省略すると可読性や保守性で劣ることになる
・interface名(Rustではtrait名)を付けて宣言するか
・名付けずにダックタイピングするか
の違いが最も大きい
後者は様々な点で劣る
両者の中間的な位置付けにいるのがGo
Goでは各型に対するinterface実装宣言を省略できてしまうため
省略すると可読性や保守性で劣ることになる
331デフォルトの名無しさん
2025/03/02(日) 23:37:21.79ID:WP5yHTvc その「保守性が劣る」というGoは世間的には保守しやすい言語と言われてるんだが
型で守るという意味ではなく、多くの人に分かりやすい簡易な構文だからという理由でだけど
型で守るという意味ではなく、多くの人に分かりやすい簡易な構文だからという理由でだけど
332デフォルトの名無しさん
2025/03/02(日) 23:44:33.72ID:g7i6E9Hi 各型に対するinterface実装宣言を省略すると可読性や保守性で劣る
その事実以外の話には言及していない
その事実以外の話には言及していない
333デフォルトの名無しさん
2025/03/02(日) 23:54:11.22ID:Na6YXFfW その可読性や保守性の劣化というのは現実にどの程度問題と言われてるの?
「自分は嫌い」というお気持ちじゃなくて?
あるいは「Rustが採用してないから正しい」とか?
「自分は嫌い」というお気持ちじゃなくて?
あるいは「Rustが採用してないから正しい」とか?
334デフォルトの名無しさん
2025/03/02(日) 23:57:06.79ID:JmtuUveA 一般的に必要な情報は暗黙ではなく明記されている方が保守性も高いんだよ
そして多くの人に分かりやすい
省略できるようにしたことはGoの仕様の失策だね
そして多くの人に分かりやすい
省略できるようにしたことはGoの仕様の失策だね
335デフォルトの名無しさん
2025/03/03(月) 00:08:35.40ID:BZGxSOwK Goの場合は「省略できる」というよりも「書かない」というのが正しい
選択できるものではなく、常に書かないものだから
正直自分も好きではないし、だいぶクセのある言語だけど、世間的には受け入れられてる
世の中の人は案外そこまで型にこだわりはなくて、それよりも分かりやすさの方が好まれたりする
それは単に「考えが違う」というだけで、劣るとか優れてるとかいうものではない
(それなら何でGoは人気なの?ってなるし)
選択できるものではなく、常に書かないものだから
正直自分も好きではないし、だいぶクセのある言語だけど、世間的には受け入れられてる
世の中の人は案外そこまで型にこだわりはなくて、それよりも分かりやすさの方が好まれたりする
それは単に「考えが違う」というだけで、劣るとか優れてるとかいうものではない
(それなら何でGoは人気なの?ってなるし)
336デフォルトの名無しさん
2025/03/03(月) 00:11:38.35ID:BZGxSOwK あとRust開発者はC++から来た人が多いと思うけど、C++のテンプレートは思いきり静的ダックタイプでしょ
あれで実際「可読性ガー」ってなるより、便利だと思う場面もあるよね?
あれで実際「可読性ガー」ってなるより、便利だと思う場面もあるよね?
337デフォルトの名無しさん
2025/03/03(月) 00:12:13.08ID:3d6F6ZIn338デフォルトの名無しさん
2025/03/03(月) 00:19:18.53ID:lMbQDSSk structural vs nominalならが安全性はnominalのほうが高いが
保守性や可読性はどちらか一方が常に優れてるわけではないな
Rustはよりメタルに近いOSやライブラリでの利用を重視してるから
安全性の面からより保守的な選択をしてる
coherenceとかもアプリケーション開発者観点だと不必要に厳しい
保守性や可読性はどちらか一方が常に優れてるわけではないな
Rustはよりメタルに近いOSやライブラリでの利用を重視してるから
安全性の面からより保守的な選択をしてる
coherenceとかもアプリケーション開発者観点だと不必要に厳しい
339デフォルトの名無しさん
2025/03/03(月) 00:25:34.97ID:xahbKnOP Goでは省略しちゃうことが多くて、
ある型についてどんなinterface群を満たしているのか、を把握するために、
対象となりそうな全てのinterface群の各々のメソッド群と見比べて、
そのメソッド群すべてを実装していることを確認することで、
ようやくそのinterfaceを満たしていることを把握できる。
たった1行を省略できる利便性(?)のために、大きく可読性が落ちているのは否めない。
ある型についてどんなinterface群を満たしているのか、を把握するために、
対象となりそうな全てのinterface群の各々のメソッド群と見比べて、
そのメソッド群すべてを実装していることを確認することで、
ようやくそのinterfaceを満たしていることを把握できる。
たった1行を省略できる利便性(?)のために、大きく可読性が落ちているのは否めない。
340デフォルトの名無しさん
2025/03/03(月) 01:43:43.47ID:lMbQDSSk gopls implementationとかで確認すればいいよ
341デフォルトの名無しさん
2025/03/03(月) 03:55:57.34ID:US4xw5vs 今どき珍しい真面目なスレッドだな
342デフォルトの名無しさん
2025/03/03(月) 04:54:41.57ID:CkLabMrP >>330
静的ダックタイピングは明示的インターフェイスでも成り立つよ。>336で言うならテンプレートとコンセプトみたいにテンプレート引数の要件を明示するやり方。
>330の言い方なら、
共通する構造&機能がある時に
・共通することを型としてあらかじめ宣言するか
・共通部分を使う時に判別するか
の違いですな。
後者は共通する構造&機能の決定を実際に使用する時まで遅らせることができるので、型の設計時点で決めなくてはならない前者よりも設計の自由度が増す。
Adapterパターンのサポートが充実していれば問題を緩和できるけど、Rustて充実してたっけ?
静的ダックタイピングは明示的インターフェイスでも成り立つよ。>336で言うならテンプレートとコンセプトみたいにテンプレート引数の要件を明示するやり方。
>330の言い方なら、
共通する構造&機能がある時に
・共通することを型としてあらかじめ宣言するか
・共通部分を使う時に判別するか
の違いですな。
後者は共通する構造&機能の決定を実際に使用する時まで遅らせることができるので、型の設計時点で決めなくてはならない前者よりも設計の自由度が増す。
Adapterパターンのサポートが充実していれば問題を緩和できるけど、Rustて充実してたっけ?
343デフォルトの名無しさん
2025/03/03(月) 06:07:05.65ID:YJglMSFw Rustは各型で共通事項をあらかじめ宣言する必要がなく
共通する構造&機能の決定を実際に使用する時まで遅らせて
それらが決まってから後から実装すればよいため
設計の自由度が高いね
共通する構造&機能の決定を実際に使用する時まで遅らせて
それらが決まってから後から実装すればよいため
設計の自由度が高いね
344デフォルトの名無しさん
2025/03/03(月) 07:42:47.63ID:FotMwNUg >>343
あれ?どうやるんだっけ?
あれ?どうやるんだっけ?
345デフォルトの名無しさん
2025/03/03(月) 10:32:52.62ID:CIgoBgkV 他人の書いたコードをインタフェースで抽象化したいときにGoのinterfaceは便利だけど
全て自分で管理する場合は明示的に宣伝した方がいいから選べるようにしてほしい
Javaの普通のinterfaceに加えてGoのinterface同時に使える言語が欲しい
全て自分で管理する場合は明示的に宣伝した方がいいから選べるようにしてほしい
Javaの普通のinterfaceに加えてGoのinterface同時に使える言語が欲しい
346デフォルトの名無しさん
2025/03/03(月) 10:43:32.37ID:wkIAEgPa >>341
少し考えれば理由はわかるはず
少し考えれば理由はわかるはず
347デフォルトの名無しさん
2025/03/03(月) 10:47:29.58ID:US4xw5vs >>346
お?上から来たな
お?上から来たな
348デフォルトの名無しさん
2025/03/03(月) 19:22:07.10ID:niTL8qrF349デフォルトの名無しさん
2025/03/03(月) 19:49:07.58ID:SsAcHPN0 >>343
Rustで共通事項をあらかじめ宣言しないで、共通する構造&機能を統一的に使うのってどうすればいいの?
Rustの型システムを考えると、(既存のコードを変更することなく) 共通する構造&機能を新たに宣言して統一的に扱える、ということだよね?
Rustで共通事項をあらかじめ宣言しないで、共通する構造&機能を統一的に使うのってどうすればいいの?
Rustの型システムを考えると、(既存のコードを変更することなく) 共通する構造&機能を新たに宣言して統一的に扱える、ということだよね?
350デフォルトの名無しさん
2025/03/03(月) 19:56:00.40ID:niTL8qrF リファクタリングをするのに既存のコードを変えないとか矛盾していて意味がわからん
後から共通メソッドをトレイト化すればいいだけだろ
それで困る人はいない
後から共通メソッドをトレイト化すればいいだけだろ
それで困る人はいない
351デフォルトの名無しさん
2025/03/03(月) 21:42:58.25ID:CkLabMrP >>350
例えば標準ライブラリの型との共通部分を統一的に扱いたい場合、標準コードをリファクタリングして新しい共通Traitを切り出すのかしらん?
例えば標準ライブラリの型との共通部分を統一的に扱いたい場合、標準コードをリファクタリングして新しい共通Traitを切り出すのかしらん?
352デフォルトの名無しさん
2025/03/03(月) 22:28:07.80ID:T1gSmlwj Rustでコーディングしたことないお客さんが来てるのか?
標準ライブラリのコード自体を書き換えなんてせずとも普通に行われていることだぞ
標準ライブラリのコード自体を書き換えなんてせずとも普通に行われていることだぞ
353デフォルトの名無しさん
2025/03/03(月) 22:56:04.92ID:trSew6xi354デフォルトの名無しさん
2025/03/03(月) 23:07:24.80ID:trSew6xi 既に存在する共通する構造&機能をポリモーフィックに扱いたい時にGoなら必要なのはインターフェース宣言だけ
既存のインターフェースに合致するものなら新しく宣言する必要もなくそのまま扱える
一方Rustの場合は新しいインターフェースを宣言して既存の構造体に対する新しいインターフェース用の実装をそれぞれ追加で書かない限りは使えない
それで済めばまだいい方で既存のインターフェースに適合させなければいけない場合は既存の構造体をラップする新しい構造体とその実装を逐一全部書いた上にインターフェースに対する実装も別途追加で書かないダメ
特に後者の手間は雪だるま式に膨れ上がるからライブラリのように他人に使わせるコードを書く場合は型の設計時点というより外部APIの設計時点で何を共通の構造&機能として使えるようにするか決めておく必要がある
既存のインターフェースに合致するものなら新しく宣言する必要もなくそのまま扱える
一方Rustの場合は新しいインターフェースを宣言して既存の構造体に対する新しいインターフェース用の実装をそれぞれ追加で書かない限りは使えない
それで済めばまだいい方で既存のインターフェースに適合させなければいけない場合は既存の構造体をラップする新しい構造体とその実装を逐一全部書いた上にインターフェースに対する実装も別途追加で書かないダメ
特に後者の手間は雪だるま式に膨れ上がるからライブラリのように他人に使わせるコードを書く場合は型の設計時点というより外部APIの設計時点で何を共通の構造&機能として使えるようにするか決めておく必要がある
355デフォルトの名無しさん
2025/03/03(月) 23:24:45.25ID:uMOb2Eig > 既存のインターフェースに合致するものなら新しく宣言する必要もなくそのまま扱える
無茶苦茶だな
そんな意図しない全ての型に自動適用される危険な言語は使いたくないわ
Rustは明示的にimplしたものだけに適用されるから安全で使い勝手が良い
無茶苦茶だな
そんな意図しない全ての型に自動適用される危険な言語は使いたくないわ
Rustは明示的にimplしたものだけに適用されるから安全で使い勝手が良い
356デフォルトの名無しさん
2025/03/03(月) 23:29:41.09ID:uMOb2Eig > 一方Rustの場合は新しいインターフェースを宣言して既存の構造体に対する新しいインターフェース用の実装をそれぞれ追加で書かない限りは使えない
そんなことはない
既にimpl Tにあるのだからimpl Trait for Tへ移動させるだけだぞ
> それで済めばまだいい方で既存のインターフェースに適合させなければいけない場合は既存の構造体をラップする新しい構造体とその実装を逐一全部書いた上にインターフェースに対する実装も別途追加で書かないダメ
そんなことはない
既存の構造体にそのままtraitメソッドを増やせる
そんなことはない
既にimpl Tにあるのだからimpl Trait for Tへ移動させるだけだぞ
> それで済めばまだいい方で既存のインターフェースに適合させなければいけない場合は既存の構造体をラップする新しい構造体とその実装を逐一全部書いた上にインターフェースに対する実装も別途追加で書かないダメ
そんなことはない
既存の構造体にそのままtraitメソッドを増やせる
357デフォルトの名無しさん
2025/03/03(月) 23:46:24.87ID:T1gSmlwj Rustでコーディングしたことないお客さんがこのRustスレでRust叩きとは完全に荒らしだ
358デフォルトの名無しさん
2025/03/03(月) 23:56:56.53ID:BZGxSOwK 外部クレートで定義されたトレイトを別の外部クレートの型に対して実装するときはラップが必要じゃない?
要素1つのタプル構造体 (いわゆる new type) で済むような話だけど
インターフェースといってるあたり微妙にズレてる感はあるけど、「ラップする必要がある」という点自体は間違ってない
要素1つのタプル構造体 (いわゆる new type) で済むような話だけど
インターフェースといってるあたり微妙にズレてる感はあるけど、「ラップする必要がある」という点自体は間違ってない
359デフォルトの名無しさん
2025/03/04(火) 00:10:16.92ID:PYBK8h/l >>358
そんな話は誰もしていないよ
今話されているのはこれ
>既に存在する共通する構造&機能を
>新しいインターフェース宣言
複数の型に共通事項が出てきたから
新たなトレイトを作って宣言する話が行われてる
ラップは不要
そんな話は誰もしていないよ
今話されているのはこれ
>既に存在する共通する構造&機能を
>新しいインターフェース宣言
複数の型に共通事項が出てきたから
新たなトレイトを作って宣言する話が行われてる
ラップは不要
360デフォルトの名無しさん
2025/03/04(火) 00:26:54.32ID:ZIAXnU+S 自分の管轄外の型に対して、自分の管轄外のトレイトを実装することだけは、安全のため禁止されているので、自分の型にするためのラップが必要
そんな特殊な例外的ケースを除けばラップはもちろん不要
そんな特殊な例外的ケースを除けばラップはもちろん不要
361デフォルトの名無しさん
2025/03/04(火) 01:25:48.23ID:JpOggS8o 最初からクレート境界を前提とした文脈だろ >>298
文脈読めよ
文脈読めよ
362デフォルトの名無しさん
2025/03/04(火) 01:53:29.12ID:s9xD5Zkr インターフェイス vs. ダックタイピング
ダックタイピングはインターフェイス名がないため可読性が著しく低い
インターフェイス名を使った制約も指定できない
必ずインターフェイス機能を使うべし
ダックタイピングはインターフェイス名がないため可読性が著しく低い
インターフェイス名を使った制約も指定できない
必ずインターフェイス機能を使うべし
363デフォルトの名無しさん
2025/03/04(火) 02:35:55.33ID:VOLcqrY4 >>362
こういう簡潔なまとめ助かる
こういう簡潔なまとめ助かる
364デフォルトの名無しさん
2025/03/04(火) 06:51:13.78ID:r27xQ0ge ダックタイピングは、意味が異なっていても、見かけの構造さえ同じなら、同一視してしまう問題もある
つまりうっかり間違えて用いても、エラーを検出できないため、安全性で劣る。
その見かけの構造さえも、複数の構造を含む場合など、
この型はどのダックタイピングで用いられているのか、読み手が認識するのに時間がかかってしまう。
これらの問題は、各型において、どのダックタイピングに用いられているのかの宣言がないことに起因している。
一方で、interfaceは「各型でどのinterfaceを用いているのか」の宣言があるため、どちらの問題も生じない。
つまりうっかり間違えて用いても、エラーを検出できないため、安全性で劣る。
その見かけの構造さえも、複数の構造を含む場合など、
この型はどのダックタイピングで用いられているのか、読み手が認識するのに時間がかかってしまう。
これらの問題は、各型において、どのダックタイピングに用いられているのかの宣言がないことに起因している。
一方で、interfaceは「各型でどのinterfaceを用いているのか」の宣言があるため、どちらの問題も生じない。
365デフォルトの名無しさん
2025/03/04(火) 09:45:00.92ID:murVybZ/ >>327 奇遇ですね私もです
366デフォルトの名無しさん
2025/03/04(火) 09:47:17.60ID:murVybZ/367デフォルトの名無しさん
2025/03/04(火) 09:50:16.00ID:murVybZ/ >>339
ほんそれ
ほんそれ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 高市「発言は撤回しない。謝罪もするな。外務省局長!任せたぞ。」👈なにをさせたかったの?😲 [826239858]
- 【実況】博衣こよりのえちえち歌枠🧪
- 外務省局長、よくわからないまま帰国へ [834922174]
- ぶっちゃけ普通の日本人は台湾とかどうでもよくて、野蛮な反日国中国が偉そうにするのがムカつく!という感情論だけだよね… [452836546]
- 自分に自信がない女の子、陽キャ美容室で80cmのエクステを付けた結果wwwwwwwwwwwwwwwwwww [329329848]
