1 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:17:03.45 ID:gDlfKP6u.net] 公式 https://www.rust-lang.org/ https://blog.rust-lang.org/ https://github.com/rust-lang/rust Web上の実行環境 https://play.rust-lang.org 日本語の情報 https://rust-jp.rs/ ※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 part15 https://mevius.5ch.net/test/read.cgi/tech/1652347700/
338 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 22:46:38.67 ID:dcG9hbvO.net] >>334 歳をとってもうプログラミングしていないん(実質現役引退)だから Cすら仕事で書いていないだろ
339 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 22:59:01.59 ID:hVKa6Imk.net] > 287 名前:デフォルトの名無しさん [sage] 投稿日:2022/07/09(土) 11:50:07.31 ID:lwwTn4Ql [2/3] > どちらにしてもRust使っても気楽にコーディングできるわけでもなく > メモリ構造考えなければいけないんですね 読んでなるほどなと思った よくわかんないけどとりあえず動けばいいという人と、 ちゃんと理解して自分の思う通りに動かしたい人の違いだなと
340 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 23:05:49.23 ID:dcG9hbvO.net] >>335 俺,win使っているが そのよい言語のRustをコンパイルするのに(C/C++する気ないのに)駄目な言語のmsvcを入れないと とコンパイルできないてのがな で、なんでmsvc必要なんだ? ひょっとしたら、linuxでもgccとかを入れないと駄目なのか
341 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 23:15:33.27 ID:yHOdCoxc.net] >>337 その人があまりにも知識不足の可能性が高い Rustでも他の言語と同様に(C互換FFIを除いて)メモリ構造なんて公開も保証もしていない ほとんどのプログラミング言語はメモリ構造なんて低いレベルで使うものではなくもっと抽象度の高い部分でその定義と保証がなされるもの だからRustでも他の言語と同様にメモリ構造は考えなくて良いし考えてはいけない メモリ構造は言語として保証していないし保証しないからこそ大胆なコンパイル最適化を行なっている 話を戻してその人はメモリ構造ではなくデータ構造と言いたかったのではないか? データ構造は他の言語と同様にRustでも考えなければならない それがプログラミングの中心だから
342 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 23:30:15.11 ID:hVKa6Imk.net] >>338 そんなこと知らずに、そういうレスしているところにドン引きだな 自分で調べた? 調べたら、その結果をここで報告よろしく
343 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 23:45:37.10 ID:yHOdCoxc.net] >>338 Rust批判派があまりにも知識不足で驚いた ちなみにこちらはLinuxだがrustc(=Rustコンパイラ)だけあればコンパイルできる
344 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 00:12:02.83 ID:VXHYDjJa.net] >>339 SwiftとかABI stabilityを実現してるやつは仕様としてメモリレイアウトを定義して公開してるやろ
345 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 00:13:44.27 ID:ZPTgd3k2.net] >>341 ["rust linker cc not found"] [検索]
346 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 00:16:59.60 ID:
] [ここ壊れてます]
347 名前:CjJVLv20.net mailto: まあ>>287 の書いてるメモリ構造という言葉はメモリレイアウトでもデータ構造でもないのは明らかだけどな [] [ここ壊れてます]
348 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 00:18:51.99 ID:z1Ut0loV.net] 隔離スレ復活させないとノイズだらけできつくなってきた
349 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 00:30:08.21 ID:tvXCky2C.net] >>342 そのABIはコンパイル後のバイナリのフォーマットの話だぜ 今回の『気楽にコーディングできるわけでもなくメモリ構造考えなければいけないんですね』はプログラミングの際の話だから関係ない プログラミングする上でメモリ構造は考えなくていい 例えばRustの型VecやStringなども各々のがどんなメモリ構造になるかは規定も公開もない もちろんソースコードを読めば内部のデータ構造までは分かるがそれに依存してコードを書いてはいけないし依存できないよう抽象化されたインタフェースのみ規定公開されている
350 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 00:33:22.94 ID:tvXCky2C.net] >>345 同感 アンチ活動は別のスレでやってほしい ここ本スレでやるのはマナー違反だと思う 今後Rustへのアンチ活動は以下のスレへ書くこと Rustアンチスレ https://mevius.5ch.net/test/read.cgi/tech/1509028624/
351 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 01:01:37.00 ID:/Pm6re6i.net] 複オジに絡んだ俺がバカだったわw
352 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 01:02:48.63 ID:qjKEOyYX.net] >>343 なるほど、 >341 >ちなみにこちらはLinuxだがrustc(=Rustコンパイラ)だけあればコンパイルできる は、比較的新しいrustを使えばgcc(リンカ)イラネってことか rustでリンカ作った方がgccのリンカよりずっと良いものになるだろうからな
353 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 01:09:37 ID:ZPTgd3k2.net] https://mevius.5ch.net/test/read.cgi/tech/1657382429/ 隔離対象をアンチに限定しない汎用隔離スレ立てた もう全部こっちでやってくれ
354 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 01:48:41.75 ID:LxkGLd0V.net] >>350 おまえ低能だな そんな内容と設定ではそのスレは過疎って終わることくらい予測できるだろ?
355 名前:デフォルトの名無しさん [2022/07/10(日) 04:45:49.56 ID:T5qatPVB.net] 荒らしてるのはLinux板の連中か。
356 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 08:32:10.98 ID:VKvLuEGz.net] Cellを使っていて思ったんだが例えば trait CellUpdateWith<T> { fn update_with(&self, f: impl FnOnce(&mut T)); } impl<T: Default> CellUpdateWith<T> for Cell<T> { #[inline] fn update_with(&self, f: impl FnOnce(&mut T)) { let mut inner = self.take(); f(&mut inner); self.set(inner); } } このようにメソッドupdate_with()を用意しておけば 内部更新もわかりやすく記述できるな let foo = Cell::new(vec![1, 2, 3]); foo.update_with(|v| v.push(7)); 身代わりにself.take()でdefault値を入れてCellから取り出し self.set()でCellへ戻すという無駄な操作は最適化で消えるようだ https://godbolt.org/z/19c4EbErG
357 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 12:00:25.54 ID:oYFJk9+G.net] >>351 それをわざと狙ってんだろうなww いかにもやりそうなこと
358 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 13:59:32.22 ID:blpABUiA.net] >>354 この手の人は自分が排除されることを最も恐れてるんだよ そうならないための策ならなりふり構わず何でもやる 自分が排除される側にいる自覚がなければそんなことやらない
359 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 19:54:18.59 ID:/ZDhY4rW.net] >>308 糞言語で自意識過剰の公開オナニーをする信者、マジきもい
360 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 23:37:14 ID:nSquZ6Rt.net] >>308 プログラミング言語界に大革命をもたらした画期的な言語だな
361 名前:デフォルトの名無しさん [2022/07/11(月) 00:14:06.35 ID:triNevnR.net] 15年近くc/c++触ってなくて(ずっとjava触ってた) rustの所有権とか何故こんな仕様になったのか経緯がわからなくて 最近のc11以降の仕様の?unique_ptrとかshared_ptrとかstd::moveとかstd::forward学んで (元々boost にスマートポインタがあった記憶があるけど記憶が曖昧) どうしてこう言う機能が出来たのか少しわかった 今のc++はconst 地獄だしとにかくコードが汚くなる こりゃrust の方が良いわ あと型名の付け方が好き。u32とかf32とか 昔cで書いてた頃typedefでわざわざ定義してたよ
362 名前:デフォルトの名無しさん [2022/07/11(月) 10:40:05.73 ID:1W23UOpt.net] const 地獄 ← 判る static_cast うぜー ← 判る Rust 万歳 ← 判らん
363 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 23:59:24.88 ID:qlTJEO+a.net] >>353 もっと便利にできるぜ use std::cell::Cell; trait CellWithMethod<T> { fn with<R>(&self, f: impl FnOnce(&mut T) -> R) -> R; } impl<T: Default> CellWithMethod<T> for Cell<T> { #[inline] fn with<R>(&self, f: impl FnOnce(&mut T) -> R) -> R { let mut inner = self.take(); let result = f(&mut inner); self.set(inner); result } } fn main() { let foo = Cell::new(vec![1, 2, 3]); foo.with(|v| v.push(7)); assert_eq!(4, foo.with(|v| v.len())); assert_eq!(7, foo.with(|v| v[3])); assert_eq!(vec![1, 2, 3, 7], foo.with(|v| v.clone())); }
364 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 21:39:01.85 ID:qV4GyRtM.net] >>360 CellでVec使えるのか 何か間違って学習していた https://qiita.com/wada314/items/24249418983312795c08 > 1. Cellの中身の型はCopyをimplしていなければならない https://dev.classmethod.jp/articles/rust-smart-pointer/ > ・Cellの中の型はCopyトレイト実装が必須 https://qiita.com/usagi/items/fc329895cebd3466910e > Cell は値の "移動" によって内部可変性を実装するため <T> は Copy 可能な "値" 向けのコンテナーで、 > i32 や Copy trait を実装した何かを扱うのに"適した"コンテナーです。 https://zenn.dev/mebiusbox/books/22d4c1ed9b0003/viewer/5df75e > Cell<T> の大きな制約として, T は Copy トレイト境界があることです. 実際にはCellはCopyを要求していない やってみたら>>360 のコードが動いてCell<Vec<_>>が使えた
365 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 22:48:49.30 ID:fFdw7/F8.net] #[derive(Clone)]のコーナーケースに遭遇した https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=487e64c7c762fb0e015e1bc9b1267fbd
366 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 22:50:32.95 ID:SBkpZpFk.net] やっぱりrustcはバグが多いね
367 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 23:12:58.85 ID:nxNpCMHU.net] >>362 標準ライブラリのderiveは型パラメータに無条件にトレイト制約課すようになってるから derivativeみたいな制約を自分で指定できるcrateを使うと良いよ https://github.com/mcarton/rust-derivative
368 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 00:28:56.56 ID:730D9OZt.net] >>361 get()がCopyを要求するからってのもあるけど 古いThe BookにはCellはCopy専用・RefCellはCopy以外も使えるという説明があったので それが日本語訳とかで残ってたんじゃないかな
369 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 23:27:56 ID:MG4+BxCd.net] >>360 !Syncで参照無しならデータ競合を起こさない、という点を使った用法だな 便利だから公式サポートすればいいのにな
370 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 00:26:56.65 ID:XqWqiApN.net] StackOverflowで「好きな言語No.1」だそうだが、調査方法に問題が有り、 二位以下も聞いた事が無いような言語ばかり。
371 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 01:36:05.55 ID:bF1qPY0V.net] >>367 お前の観測範囲が狭いだけ。
372 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 08:04:49 ID:XbfHqe9W.net] CarbonとかいうRustとC++のあいのこみたいなのが出てきた
373 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 12:35:25 ID:FCfDFeLf.net] Carbonは最強言語ぞ
374 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 12:39:05 ID:MUkQlR/e.net] RustがCarbonに勝ててるところが見つからないな
375 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 12:45:18 ID:ThH+Z+BW.net] Rust vs Carbonスレ立ててそっちでやれ
376 名前:デフォルトの名無しさん [2022/07/20(水) 13:30:14 ID:S6pSKHOi.net] このスレにはRust好きの愚民がたくさんいるようですね。 Carbonさん、やっておしまいなさい
377 名前:デフォルトの名無しさん [2022/07/20(水) 13:30:16 ID:S6pSKHOi.net] このスレにはRust好きの愚民がたくさんいるようですね。 Carbonさん、やっておしまいなさい
378 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 14:11:36.68 ID:xLuB33a9.net] 1.0が出てからにしてください
379 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 14:52:25.57 ID:IMMZUJf4.net] CarbonとRustは名称の紛らわしさではどっこいどっこいだな
380 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 14:54:39.84 ID:igxVbWbR.net] ほーん https://github.com/carbon-language/carbon-lang
381 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 17:02:14.65 ID:xLuB33a9.net] とりあえずcarbon自体のコードの8割がcarbonで書かれるエコシステムが確立してからだろう
382 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 19:50:56 ID:hGf+NvAH.net] JSのTypeScript C++のCarbonって感じかね どうなるんだろうね 確かにC++を無くすのは勿体ないがまだ0.1か いつ1.0になるかなぁ 10年後くらいか Rustよりも難しくはなくメモリ管理も楽になるのかな
383 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 20:00:37 ID:xdIX6xM1.net] Rustはあらゆる面で安全と高速の両立する抽象化を実現した言語だから 現在のCarbonのドキュメントを見る限りRustの領分に入ってきていないでしょう それよりもC++と書き方がかなり変わっていて互換性がなく別言語の様相でCarbonは中途半端な立ち位置に見える
384 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 20:01:46 ID:sReX4jGj.net] Carbonは「Rustが難しすぎるから簡単にしたい」とは言ってなくて、C++と相互運用できる言語を目指してるだけっぽいからなぁ 結果的にRustより難しくなっても驚かないけど
385 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 20:33:50.16 ID:sReX4jGj.net] そもそもCarbonの使い所ってC++のレガシーコードが大量にあるところだから C++も当然マスターしてないといけなくて、学習量は明らかに増えてる気もする
386 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 20:52:36.69 ID:oyesoq1v.net] ドラゴンボールのゲームでドドリアの色違いでカーボスと言うのがいたのを思い出した どちらかと言うとザーボンの色違いがカーボスなら納得なんだけど…
387 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 21:27:24.19 ID:mJssGRdK.net] Carbonって中途半端すぎね? まともな言語設計者ならオブジェクト指向もう採用しないと思うんやけどなんか継承機能もあるみたいだし なんでこういう中途半端のところもC++参考するんだよこういうところこそRust参考にしろよ
388 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 21:44:56.66 ID:qLBZujX3.net] >>384 C++とシームレスに相互運用することが最優先課題だから、そこはC++と同じにしておかないとそもそも存在意義がなくなる
389 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 22:16:07.31 ID:gROTqHCf.net] ま、2-3年後にどうなってるかだな バックにGoogleいるらしいから開発終了なんてことはなさそうだが
390 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 22:21:24.71 ID:9oJrmZpV.net] >>386 逆じゃね?企業だからこそ開発者の熱意とか関係なくコストに見合わないとなれば容赦なく切られるかと Goみたいに社内で使うことが確定してしまえば安泰だけど
391 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 22:28:16.35 ID:3tivAU0I.net] SDGsの流れ的にCarbonは使われなくなる運命
392 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 22:43:27.67 ID:xLuB33a9.net] なる、元素記号Cからの名称か
393 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 00:45:01.09 ID:g1dckGB4.net] 5年たったらまたオブジェクト指向が再燃してるかもしれない と言うか業務では大規模開発にはオブジェクト指向が必須なんだな モジュールでは全体が見通せない
394 名前:はちみつ餃子 mailto:sage [2022/07/21(木) 00:52:44.62 ID:/hG5LMVG.net] 話題が逸れるが >>384 が C++ の型システムをオブジェクト指向と呼んでるっぽいのが気になる。 オブジェクト指向はオブジェクト同士がメッセージを送りあう形でプログラムを構成する思想のことで、 それを言語機能としてどのように支援するのかには様々なバリエーションが有りうる。 型システムとは独立した概念だよ。 ふんわりした概念なので定義によるが Rust もオブジェクト指向 (をサポートする) 言語に分類されることはある。 それはそれとして、 C++ の型システムもベストとは言えないが最悪というわけでもない。 実際にかなり多くの場面で活用されている実績は認めないといけない。 要するに「この程度で十分」ではあるんだよ。 C++ の本当につらいところは C から引き継いだガバガバさや歴史的事情のワケわからんところであって、 型システムの根本的な改善はそれほど切実に必要だとは思わないな。 C++ が駄目だと否定するんじゃなくて C++ みたいなことを C++ より上手くやるという方向性はアリだろう。
395 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 00:54:52.22 ID:0vTmbBj3.net] 話題が逸れるが、...で読む気失せたわ
396 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 00:58:24.47 ID:MOkaWH3B.net] >>391 前半は正しいが 後半のクラス継承システム程度で十分という点には賛同しかねる 今までの現実の多くのケースはクラス継承システムしか使えない環境だったから無理矢理にそれを使っているだけである
397 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 01:00:56.06 ID:g1dckGB4.net] 似たような機能のものを大量に書く場合どのように実装するのが楽かどのように管理するのが楽か モジュールではないな
398 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 01:15:53.78 ID:MOkaWH3B.net] >>394 その点ではRustもC++も同じオブジェクト指向なので何を主張したいのかわからない Rustの基本はselfに見られるようにオブジェクト指向 違いはC++がクラス継承なのに対してRustはトレイト ジェネリックから見るトレイト境界による型制約となり 逆の視点から見るとトレイト付加によるメソッド拡張となる
399 名前:デフォルトの名無しさん [2022/07/21(木) 03:25:39.61 ID:DiLbgRco.net] いくらRustが有望だと言われていても、ポインターがないと使いづらい場面ってあるよな ツリー構造とか、ポインターなしで大して実行速度も落とさず記述する技があるようだけど・・・・大掛かりなことをするのなら労力を割くのもいいけど、ちょっと使うだけには労力がかかりすぎる
400 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 04:26:36.96 ID:VmE9g8Ff.net] ポインタあるじゃん
401 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 05:01:15.84 ID:hbmQrHo+.net] >>396 Rustにも様々なポインタがあり 様々な仕様と様々な安全度合いで記述できる
402 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 08:09:40 ID:HHuzACnI.net] >>385 Rustからわかるように、求められているのは膝を打ち抜く自由の無いc++であり、コーダーに使わせる言語。 unsafeはc++で実装すりゃいいので、継承とかは使うだけに限定するという手もある。
403 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 13:48:15.98 ID:xy799ZfA.net] >>391 話し手がなにをオブジェクト指向の言語としているのかどうか判断する程度の読解力は持ち合わせてくれないかな? RustはC++のように継承を導入することによってもたらされる問題を回避するためにclassじゃなくてtraitを基本的なプログラムの構成要素として採用することで既存のオブジェクト指向言語と一線を画すというプログラミング言語史に残る進歩を達成していた
404 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 15:49:13.07 ID:Q1uK5/Rv.net] >>400 Haskellの型クラスの方が先だろ。 「プログラミング言語史に残る進歩」とかさすがに恥ずかしいレベル。
405 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 16:58:11.12 ID:xy799ZfA.net] >>401 RustのtraitをただのHaskellの型クラスの類似物としてしか認識できないのはお前が単に馬鹿だから Rustのtraitは本来継承もmixinとも違ったC++のclassより洗練された新たなプログラムの構成要素だっていう側面が理解できていない馬鹿が多すぎる ただRustではこのtraitという構成要素に実用上の面から今度は型クラスという機能も持たせているというだけで話の順序が違う こんぐらいRust書いていたらtraitには単に型クラスだけの意義だけじゃないってわかると思うんやがお前にはそういった才能もないただのネット上で繰り返し喧伝されている宣伝にしか注目する脳がないいわばにわかの部類の奴だということがわかった
406 名前:デフォルトの名無しさん [2022/07/21(木) 17:50:57.39 ID:eNA5340i.net] traitの画期的な部分はc++のabstract classで実現できないの?
407 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 17:54:16 ID:F7Gtvv1S.net] >>402 何が言いたいのかよくわからないけど型クラスになくてtraitにあるものって何? associate typeはrustの発明だと思うけど、そういうこと言いたいわけでもなさそうだし
408 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 18:07:36 ID:ySHdWcK4.net] 自分が崇拝する神だけが唯一正しいと妄信して 他人の考え方を徹底的に糾弾排斥するのがカルト カルト化した人間とまともな議論ができると思うな
409 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 18:19:30.67 ID:xy799ZfA.net] >>404 公式サイトにすら出典付きで載ってあることなんだけどなんでここで聞くの? 繰り返しになるがtraitの型クラス以外の側面に気づけないのはお前が単に馬鹿なだけ
410 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 19:01:28.92 ID:HGs+QJMA.net] >>406 そういうのを誘導しないからお前はダメなんだよ。 prev.rust-lang.org/ja-JP/faq.html#how-do-rust-traits-compare-to-haskell-typeclasses How do Rust traits compare to Haskell typeclasses? Rust traits are similar to Haskell typeclasses, but are currently not as powerful, as Rust cannot express higher-kinded types. Rust’s associated types are equivalent to Haskell type families.
411 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 19:15:30.44 ID:F7Gtvv1S.net] >>407 traitの方が表現力低いって言ってるじゃねーか
412 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 20:10:50.68 ID:SY914jbi.net] レスバスレ使ってくれませんか?
413 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 20:48:28.30 ID:rGFlKcYB.net] >>407 それURLがprevで始まっているように古い情報ページ わざわざそれを出すのは何か意図がある?
414 名前:デフォルトの名無しさん [2022/07/21(木) 21:43:04.55 ID:vaotA28G.net] >>408 正しい情報を啓蒙するのは面倒だということを知らしめる意図じゃない?
415 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 21:59:42 ID:vJeGD7jb.net] >>404 Rustのトレイトは トレイト境界を実装で指定できるだけでなく トレイト境界を型宣言でも指定できるなど 様々な点で型クラスと異なるよね?
416 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 22:56:58.50 ID:crFoTo11.net] 幽霊型🥺
417 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 23:06:53.32 ID:XUR5FOR
] [ここ壊れてます]
418 名前:i.net mailto: >>404 associated typeもhaskell由来 [] [ここ壊れてます]
419 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 23:56:47.54 ID:vrEITS91.net] >>412 トレイトに関しては当然Haskellの型クラス由来の部分が多いけど互いに片方にしかないものもあり異なる側面があるわけか
420 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 00:02:56.00 ID:Dec8FkF+.net] >>412 よくわかんないからコードで書いて
421 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 00:07:23.73 ID:3PGiuxDq.net] 今のところ型システムは完全下位互換だよ
422 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 00:22:12.08 ID:hXBfLf2I.net] >>416 普通のこれだろ struct Foo<T: Trait1 + Trait2> { inner: T, }
423 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 00:32:54.07 ID:/9LzCqck.net] >>418 これが>>402 が言う型クラス以上の意義があるものなの?
424 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 00:45:08.67 ID:hXBfLf2I.net] 402の話は402に聞け 少なくとも>>418 は型定義の時点で制約できるから意義がある
425 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 00:46:45.91 ID:Dec8FkF+.net] >>418 -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
426 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 01:09:40.70 ID:hXBfLf2I.net] >>421 いきなり何かわからない話を向けられても困る 解説せよ
427 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 01:43:49.12 ID:kvE65+oR.net] トレイトのどの辺が「洗練された新たなプログラム構成要素」と感じるのか全然分からん 俺の中ではインターフェースと一緒の扱い Rustが画期的だったのはOwnership/Referenceルール + Borrow Checker この点に異論ある人はいないよね?
428 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 02:15:42.10 ID:g+hZIhYV.net] >>423 一般的なインタフェースなんて Trait Boundsもimpl Traitもdyn Traitもないゴミ >>419 その点でも差異があるだけでなく Rustのトレイトは基本概念こそHaskellの型クラスと同じだがそれ以外は各々の言語に適応してかなり異なる
429 名前:はちみつ餃子 mailto:sage [2022/07/22(金) 03:26:24.88 ID:fX2QhDiX.net] >>424 そりゃ言語に合わせて変えるところがあるのは当たり前だが、 基本概念が同じだというなら類似物ではあるだろう。 カテゴリ分けしたらおおよそ同じところに分類するよ……。
430 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 03:47:26.49 ID:u1/oKmBi.net] >>425 それは違うのではないかな 例えばHaskellはRustのtraitでのdyn(動的解決)とimpl(静的解決)といった重要な基本概念を欠いているよ
431 名前:デフォルトの名無しさん [2022/07/22(金) 05:52:26 ID:FhKnOINS.net] C++の欠点は、何でもできること。 その欠点をなくして、わかりやすくしたのがRust。 バイナリ界のJavaと言い換えても良い。 ほとんどのプログラマはC++よりRustを使うほうが良い。
432 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 08:04:03.49 ID:FDKNW5k7.net] >>410 だから最新情報に誘導しろよ。 無能か?
433 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 09:31:13.18 ID:8cs6kRrX.net] >>427 これからRustはIT土方専用言語になっていくんだろうなあ
434 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 09:55:09.86 ID:aK9LU/qI.net] >>424 >一般的なインタフェースなんて >Trait Boundsもimpl Traitもdyn Traitもないゴミ 言語化できてないから本質を理解できていように見える Trait Boundはジェネリック型の型制約で一般的なインターフェイスも型制約として機能する 一般的なインターフェイスは動的ディスパッチなのでdyn Trait相当 impl Traitがmonomorphizationのことを言ってるならそれはTraitの機能じゃなくGenericsの機能 C++で20年前から使えるよね? C++以外でもSwiftみたいに一部の言語はGenericsのspecialization機能があるけど一般的にはオーバーロード使ってstatic dispatchにすることが可能
435 名前:デフォルトの名無しさん [2022/07/22(金) 10:57:57.42 ID:GQh1j6M0.net] >>418 javaのgenericsでextends使うとできるやつかな?
436 名前:デフォルトの名無しさん [2022/07/22(金) 11:30:46.07 ID:emgmw9dd.net] Java厨は出て来ないで下さいうざいだけです
437 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 11:34:22.85 ID:LVIZaCij.net] >>429 msとかgoogleとかの狙いはそうだろ。 土方がコーティングしてもバグが入り込まない。 その代わり難易度が上がっているからコーダーの単価上がりそうだけど、msとかgoogleはそんなの気にしないだろうし。
438 名前:デフォルトの名無しさん [2022/07/22(金) 13:14:37.08 ID:GQh1j6M0.net] >>432 rustの画期的な部分なんだろ?言い返せないのかよダサいなお前 本当に革新的なのは>>423 あたりなんじゃないの