Rust part27

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2024/12/02(月) 22:32:50.31ID:D+1pIyvG
公式
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/
2025/03/15(土) 09:16:05.70ID:tr5ODwiQ
>>495
一般的に constraints の訳語として「制約」をあてるのでこの場合には好ましいとは言えない。
ただ Haskell で constraints と呼んでいるものと Rust で bounds と呼んでいるものに類似点があるかというとまあ結構あるとは思う。
2025/03/15(土) 09:23:16.52ID:M+mqoQUv
二つの辺の長さが等しいと言う制約のと
○○という関数を持っていると言う制約
511デフォルトの名無しさん
垢版 |
2025/03/15(土) 09:24:31.14ID:qQFYiVQo
>>494
ブランチを切るで暴れてた人ですねわかります

>>501
そんな理由だったら単に「定格」でいいわ
2025/03/15(土) 09:31:26.54ID:M+mqoQUv
カタカナでいいんじゃないかw
英語見た場合に納得できる
2025/03/15(土) 09:43:00.89ID:M+mqoQUv
こういう時は何故かHaskell = 圏論勢が出てこない
514デフォルトの名無しさん
垢版 |
2025/03/15(土) 09:44:01.84ID:MW+uPLNw
>>506
英語版の Rust book だと「型やライフタイムの使われ方を制限する (to restrict) 」とあるよ

Trait and lifetime bounds provide a way for generic items to restrict which types and lifetimes are used as their parameters.

数学とかプログラミングと関係ない、普通の言葉としての bound は元は「紐で縛る」から来てる
制限、制約、境界といった意味はそこからの派生
515デフォルトの名無しさん
垢版 |
2025/03/15(土) 09:53:00.21ID:MW+uPLNw
そもそも >>506 だって制約だと思う
ジェネリクス関数の中で呼べるメソッドが増えることに注目してるようだけど、利用側から見ればその関数に渡せる型について制限が増えるでしょ
2025/03/15(土) 10:02:10.90ID:ub1zWmmn
>>515
それはおかしい
トレイト境界の対象は型
最も制約の多いAny状態を出発点として
トレイト境界を増やせば増やすほど型が機能できる自由度が増えていく
2025/03/15(土) 10:28:22.62ID:M+mqoQUv
>>516

三角形が二等辺三角形のみに限定されて自由度が増えてると思うか?

これが制約だと思えない人は数学的な素養がない
2025/03/15(土) 10:35:19.38ID:qQFYiVQo
>>506
トレイト視界にすれば良かったんじゃね
2025/03/15(土) 10:37:07.82ID:e4F+UdWA
トレイトバウンズでええやん
2025/03/15(土) 10:38:12.12ID:M+mqoQUv
機能実装=制約
情報量が少ないのが自由度が大きくなりがち

確率だとしても明日の天気の状況が全くわからないとすると何の制約もなく平等に各状態がある
天気予報などから明日は降水確率70%などと情報を得ると確率がかわり偏る

情報学で言うエントロピーが増大した状況
ビットの0と1が等しい確率で出てくるような何ら情報の無い状況がエントロピーが少ない
2025/03/15(土) 10:42:25.48ID:qQFYiVQo
>>516
void * はなんでも渡せるが逆は出来ない
trait もそうで増やせば増やすほど渡せるものが制約されていく
2025/03/15(土) 10:43:38.21ID:qQFYiVQo
>>517
用語にいちいち反対している人は
AIに質問して還って来た答えを
ここにコピペしてるような臭いがする
2025/03/15(土) 10:50:01.91ID:ub1zWmmn
>>521
それは真逆の視点だから真逆の結果となっている
型に対するトレイト境界なのだから型の視点で見るべき
トレイト境界がAnyしかない初期状態が最も制約されていて機能がほとんど使えない不自由な状態
そこからトレイト境界を増やせば増やすほど実行できる機能が増えて自由度が増していく
2025/03/15(土) 10:51:10.99ID:M+mqoQUv
自由度なんて何も考えなくても理解出来るだろ…
思い込みを直す機会だぞ
なんなら大学に行って数学と情報学を学べばいい
2025/03/15(土) 10:52:21.41ID:ub1zWmmn
>>522
「トレイト境界」という状況を最も的確に表していて正しい訳に対して
なぜ反対しているのか?
2025/03/15(土) 10:54:27.10ID:ub1zWmmn
>>524
CSを学ぶべきは君だろ
「トレイト制約」派は本質を理解できていないから「制約」なんて間違った用語を用いてしまう
2025/03/15(土) 11:00:14.62ID:M+mqoQUv
>>526
学生と言うクラスに対してそれが三角形なのかと言う問いはおかしく見えるが
学生であり三角形でもある可能性もある

トレイトが実装されていなくても同等の機能が実装されている可能性もある
一概にトレイトが実装されているから高機能であると言う論は当てはまらない

ある機能を使う場合に対象となるものがトレイトを実装されているものに限定されているだけ
これはただの制約でしかない
2025/03/15(土) 11:03:33.75ID:M+mqoQUv
トレイト境界 トレイト制約 トレイト要求 トレイト条件 トレイト限定

whereでトレイトを限定しているので指定の自由度は低くなっている
2025/03/15(土) 11:10:08.04ID:ub1zWmmn
>>527
プログラムを書いたことないのかな?
impl Display for T した時にそれはDisplay機能を追加したのであって制約したわけではない
fn foo<T: Display>() した時もそれはDisplay機能を追加したのであって制約したわけではない
もちろん逆の視点で見れば制約になるのは当たり前だが逆の視点で見る必要がない
普通の視点ではDisplay機能が増えて利便性が上がったと解釈する
その機能を持つ線引きとしてトレイト境界がある
これをトレイト制約と訳すのは違和感ありまくりの間違いだ
2025/03/15(土) 11:11:57.53ID:ub1zWmmn
>>528
わざと逆方向の視点で語ってるだろ
まともな視点では使える機能が増えている
制約ではない
2025/03/15(土) 11:15:38.63ID:M+mqoQUv
>>529
トレイト境界について話をしてるんだけど?わかってるか?

トレイト境界は制限でありある種の束縛である
2025/03/15(土) 11:16:16.66ID:M+mqoQUv
>>530
わざと馬鹿な振りしてるのか?普通に馬鹿なのかどっちなんだ?
2025/03/15(土) 11:19:12.75ID:M+mqoQUv
トレイト境界 訳語でぐぐったら出来たぞ
https://github.com/rust-lang-ja/book-ja/issues/172

> その型がとりうる値を制限し、より具体的な型を定義する

制約を含んでいる
2025/03/15(土) 11:21:18.09ID:ub1zWmmn
>>531
真逆の視点で見れば制約と解釈できるのは当たり前
しかしそんなバカな視点持つ人はいない
デフォルトとAnyトレイトしか使えない不便で制約が最大の状態から
各トレイト境界により各トレイト機能を使えるように制限を解放していくのがトレイト境界のプログラミングほ本質
「トレイト制約」派は頭がおかしい
2025/03/15(土) 11:23:51.41ID:M+mqoQUv
>>534
相手に対して決めつけたベン図的な考えをしてるのが間違い
自分はトレイト制約にしろとはいってない

ただトレイト境界は制限を含んだものだと言ってる
自由度が低くなると言っている

トレイト境界で自由度が高くなると言うポンコツと意見が対立するのは当たり前
2025/03/15(土) 11:26:39.91ID:M+mqoQUv
学生であり三角形の可能性としては

名前が 三角 形さんである場合が当てはまる
その人は学生であり三角形
2025/03/15(土) 11:28:48.27ID:A6Zst3Ly
>>498
これに触れちゃったから真っ赤になっちゃってるね
538デフォルトの名無しさん
垢版 |
2025/03/15(土) 11:32:47.50ID:MW+uPLNw
>>534
もしかして impl X for Foo のように「トレイトを実装する」ことを trait bound と思ってる?
trait bound は「この関数に渡せる型Tは〇〇を満たさなければならない」の意味だよ?
Tとしか書かれてないジェネリクス関数は文字通り「何でも渡せる」から、これが一番制約が少ない
2025/03/15(土) 11:34:15.16ID:ub1zWmmn
>>535
何度言っても理解しようとしないやつだな
非現実的な視点としてそこでは使わない非該当な型からみれば、その型は使えないのだから制限となるのは当たり前だ
そんなプログラミングとかけ離れた非現実的な視点でみるのはおかしい
プログラミングの視点では各トレイト境界を増やすことでその関数でできることが増えて制限から解放される
2025/03/15(土) 11:40:22.78ID:ub1zWmmn
>>538
その真逆な視点から見れば制約になるのはの当たり前だとずっと言ってるだろ
どちらを制約と捉えるかの問題
Anyしか何もできない<T>が最も制約されている状況
それに対して<T: Trait>とトレイト境界を課すことで制約がなくなって使える機能が増えていく
2025/03/15(土) 11:41:12.38ID:M+mqoQUv
>>539
トレイト境界に対しては真逆だろ

プログラミングの視点で見てもトレイト境界を増やすことで制限が増えて対象への制約が増える
実装でトレイトにあたる部分を使用しているかどうかはどうであれ自由度が減る
こんな当たり前のことすら理解できないのか?
2025/03/15(土) 11:43:24.52ID:M12uOjVK
あえて造語すれば機能域とかになるのかな
制約とか機能が増えるとかは視点によって出てくる結果だろう
2025/03/15(土) 11:46:45.42ID:ub1zWmmn
>>541
その180度逆の視点で見れば制約になるのは当たり前だがそんな視点でプログラミングは行われない
「トレイト境界」により「制約された」とは考えることはなく
「(制限されてる状態から)使える機能が増えた」と考える
2025/03/15(土) 11:50:54.00ID:ub1zWmmn
>>542
その通り
視点によって両方が起こる
だからそこ「トレイト制約」ではなく「トレイト境界」が正しい
各トレイト境界により線引きされて境界が定まるだけ
それにより使える機能が増えて便利になることがプログラミングの本質
制約されて不便になったとは考えない
2025/03/15(土) 11:54:54.99ID:M+mqoQUv
>>543
脱線になるが自由度の意味が判ってない

三角形なら基礎的なルール(三つの角度を合わせると180度など)守っていれば辺の長さや角度は自由に設定できる 自由度が高い
二等辺三角形は二辺の長さが同じと言う制約がありその他にも角度が制限される 自由度が低い

二等辺三角形は自由度が低いがそのために角度などを利用して他の隣接した線分などとの角度が確定できるようになる
自由度は減っているが他から見ると利用価値がただの三角形から上がってる
2025/03/15(土) 11:57:50.75ID:5IRcwf8/
制限なしの型パラメータを制限してるだけでしょ

<T> ←制限ナシ
<T: Eq> ←Eqで制限
<T: Copy> ←Copyで制限
<T: Eq + Copy> ←Eq+Copyで制限

制約って言ってる人の感覚のほうが俺も近い
(型パラメータの型を)制約ってことでしょ

> 使える機能が増えて便利になることがプログラミングの本質

そんな主張生まれて初めて目にしたわ正直w
2025/03/15(土) 12:03:05.22ID:M+mqoQUv
自由度すら理解できないなんて
この人いつもの長文でおかしなRust擁護書いてる人かな?
2025/03/15(土) 12:04:44.44ID:ub1zWmmn
>>546
その真逆の不自然な視点を取ることももちろん可能だが
普通はこちらの視点

<T> ←(Any以外)何もできず制限最大
<T: Eq> ←Eqが使えるようになる
<T: Copy> ←Copyが使えるようになる
<T: Eq + Copy> ←EqもCopyも使えるようになる

制約を増やしているのではなく
機能を増やしている
だからトレイト制約なんていうバカな呼び方を採用しない
2025/03/15(土) 12:07:05.48ID:qQFYiVQo
>>523
そう思うならトレイト視界を使ってくれ
2025/03/15(土) 12:10:13.35ID:ub1zWmmn
>>547
偏った片方の視点でしか見れない可哀想な人だな
まずは視点を変えることで2つの真逆な見方があるという当たり前のことを理解しようね
2025/03/15(土) 12:10:26.25ID:5IRcwf8/
型を制限してるんよね
機能がどうのこうのの以前にね
これって理解するの難しいのかなあ
2025/03/15(土) 12:13:27.59ID:ub1zWmmn
>>549
トレイト視界なんて意味不明
トレイト境界を増やしていくことでその型の使える機能が増えていく
そこで各々のトレイトに境界という線引がある
2025/03/15(土) 12:16:19.89ID:ub1zWmmn
>>551
そんな当たり前のことはわかってると何度も伝えてるだろ
その片方の視点でしか考えられない狭い考えの人が「トレイト制約」という間違った用語にこだわっている
2025/03/15(土) 12:16:42.56ID:M+mqoQUv
>>548

vec<T>
vec<T>:where T Eq
vec<T>:where T:Copy
vec<T>:where Eq + Copy

自由度が高いvecはどれ?トレイト境界で自由度が増えるなんて馬鹿はいない
2025/03/15(土) 12:23:05.50ID:ub1zWmmn
>>554
二つの視点を理解できた?
さらにその問題ならVecの視点とTの視点でさらに二つ分かれる
もちろんトレイト境界はTに対するものだからTの視点が普通人の視点
トレイト境界が何もなければTに対して何もできないから一番不自由な状態
2025/03/15(土) 12:24:50.62ID:E7lv2JsK
「自己責任」の語源という噂もあるIT界隈ってやっぱ最先端なんだな
自由と制約
性善説と性悪説
なんでもITで定義できる
557デフォルトの名無しさん
垢版 |
2025/03/15(土) 12:24:54.00ID:5IRcwf8/
<T: Eq>で考えたとき
「: Eq」はどこにかかってんのか?
「T」でしょ、それ以外ではないでしょ?
で「T]は何かっていうと型でしょ?

この話のどこに「機能」とやらが出てきたの?
片方の視点もなにも、そもそもの話が
2025/03/15(土) 12:25:47.49ID:M+mqoQUv
まだ自由度すら理解できないんだよな
文系プログラマの末路が見える
559デフォルトの名無しさん
垢版 |
2025/03/15(土) 12:30:10.54ID:MW+uPLNw
「俺の解釈」でなくちゃんと公式の説明を読もう
https://doc.rust-lang.org/reference/trait-bounds.html
2025/03/15(土) 12:32:15.55ID:ub1zWmmn
>>557
各トレイトは各々の特性という機能を宣言している
Tという型が何をすることができるものかをトレイト境界で指定していく

ちなみに何度も言っているが
Tという抽象型自体の視点ではなくて、Tに入りうる具体型候補の集合という裏の視点で見れば、トレイト境界が制約になることはもちろん理解している
そんな偏った視点で考えるのはおかしいと主張しているだけ
だから「トレイト制約」というアホな用語は絶対に許容しない
2025/03/15(土) 12:34:54.10ID:M+mqoQUv
文系が誤魔化しに来ている
2025/03/15(土) 12:35:11.48ID:5IRcwf8/
>>559
恥ずかしながらそれ読んだことなかったw

> Trait and lifetime bounds provide a way for generic items to restrict which types and lifetimes are used as their parameters.
> 特性と有効期間の境界は、汎用アイテムがパラメータとして使用される型と有効期間を制限する方法を提供します

はいこれ
型を制限なのです
2025/03/15(土) 12:41:26.07ID:M+mqoQUv
>>560
>>506
> 「制約」という単語は真逆の意味だから使ってはいけない
2025/03/15(土) 12:41:44.05ID:ub1zWmmn
言った通りだろ
T自体ではなくTに入りうる具体型候補の集合で考えればもちろん制限になる
2025/03/15(土) 12:43:19.33ID:ub1zWmmn
>>563
その通り
トレイト制約という不自然な用語を採用するつもりは絶対ない
2025/03/15(土) 12:50:29.91ID:M+mqoQUv
トレイト境界 機能:型を制約します

その一方で
「トレイト制約は不自然だ~」
これは無いな
2025/03/15(土) 12:58:39.76ID:ub1zWmmn
>>566
まだ二つの視点を理解できないのかね?
トレイト境界は
機能を強化する側面と
具体型候補を制限する側面がある
互いに裏返しでどちらも正しい
その線引をしているから境界
568デフォルトの名無しさん
垢版 |
2025/03/15(土) 13:09:12.24ID:MW+uPLNw
>>567
bound が「線引き」だとして、例えばRustコンパイラが出す以下のメッセージはどう訳すの?
Error: the trait bound is not satisfied
「制約を満たさない」からエラー、という方が自然じゃない?
2025/03/15(土) 13:22:26.55ID:ub1zWmmn
>>568
文字通りにトレイト境界を満たさないだよ
例えば具体的に Error: the trait bound 'TypeA: TraitB' is not satisfied と指摘される
つまりこのトレイト境界を満たさないとは
TypeAはTraitB(の機能)を実装していない、という意味
570デフォルトの名無しさん
垢版 |
2025/03/15(土) 13:23:13.31ID:MW+uPLNw
「トレイト境界」という言葉が既に用語として認識されている感はあるし、「トレイト境界を満たさない」と書いても実用上は伝わると思うけど
「境界線を満たす」のように、satisfyの目的語が線になることはないと思う
2025/03/15(土) 13:24:22.65ID:e4F+UdWA
トレイトも日本語に訳した方がいいよね
2025/03/15(土) 13:26:47.33ID:ub1zWmmn
>>570
線だとは誰も言っていない
線引をして境界を構成しているわけなので、線ではなく境界
だからトレイト境界(trait bound(s))という用語が英語でも日本語でも正しい
2025/03/15(土) 13:28:22.19ID:qQFYiVQo
imple S {}
を全面的に禁止して
imple T for S {}
だけしか使えない環境にするべきだったね
2025/03/15(土) 13:35:57.03ID:ub1zWmmn
>>571
クラスもインターフェイスもトレイトもそのままが良いと思う

>>573
トレイトは異なる型の共通機能に対して共通処理をしてコードの共通化をするためにある
そのコード共通化で必要となる共通機能をトレイト境界として列挙する
各型の独自の機能についてトレイトを設ける必要はない
575デフォルトの名無しさん
垢版 |
2025/03/15(土) 13:38:34.38ID:tBWUFgvS
>>572
>>567 の最後の行で (trait bound は) 「線引きをしている」と主張してない?
2025/03/15(土) 13:43:15.55ID:ub1zWmmn
>>575
線引をして境界が構成されるんだよ
だからトレイト境界と呼ぶ
2025/03/15(土) 14:20:09.90ID:E7lv2JsK
二項演算を使いたいだけなのに単位元の定義を強制されるパターンはたまにある
制約がないと言えるのは、使いたい関数の名前とトレイトの名前が同じやつだ
2025/03/15(土) 14:32:56.25ID:WVXVz4wb
なんか伸びてるけどトレイトのようなものは他言語でもよくあるでしょうに
ジェネリックくらいちゃんと理解しとけ
2025/03/15(土) 14:46:17.14ID:Th8G7jf3
PHPだね
2025/03/15(土) 14:47:12.31ID:Th8G7jf3
Pythonにはトレイト無いんだよね
2025/03/15(土) 15:05:58.12ID:5IRcwf8/
>>578
Javaのジェネリクスどうなってるかなって見てみたら

https://docs.oracle.com/javase/tutorial/java/generics/boundedTypeParams.html
> Bounded type parameters are ...
> ..., use a type parameter bounded by the Comparable<T> interface:

Bounded type parametersって呼び方なんだな
582デフォルトの名無しさん
垢版 |
2025/03/15(土) 15:11:33.31ID:suA91QDC
制約と言う人達は trait を理解していない
C++03からやり直すべき
583デフォルトの名無しさん
垢版 |
2025/03/15(土) 15:19:39.28ID:MW+uPLNw
>>582
このスレで出てる話は trait でなく trait bound という言葉についてだぞ
2025/03/15(土) 16:39:04.00ID:HIinARQ8
>>570
日本語では「境界を満たしていません」なんて言い方はしないんだよ
質の悪い機械翻訳以外ではね

現代日本語の「境界」は境界線や境目のことであって境界づけられた範囲や領域を指して「境界」とは言わない

“bound is not satisfied”や”requird by this bound”などからもわかるようにRustを開発してる中の人も明らかに制約面を重視してboundsという用語を使っている

それだけじゃなくtrait boundsはジェネリックの型パラメーターの型制約の一種
ジェネリックにおける「型制約」という用語はRustに限らずプログラミングの概念として広く定着しているものでRustでももちろん使われている

それらを完全に無視して無理のある「境界」という訳語を当ててこじつけ解釈を続けるメリットは何もない
585デフォルトの名無しさん
垢版 |
2025/03/15(土) 17:03:40.05ID:suA91QDC
bounds に制約という意味はない
586デフォルトの名無しさん
垢版 |
2025/03/15(土) 17:07:19.39ID:suA91QDC
trait は特性を表現するのみで
それが何かを制約することはない

trait bounds はある特性の範囲を表現するのみで
それが何かを制約することはない

これで理解しないならお手上げだ
587デフォルトの名無しさん
垢版 |
2025/03/15(土) 17:09:42.34ID:suA91QDC
日本に匙を投げる日は近い
備えよ
2025/03/15(土) 17:13:39.17ID:HIinARQ8
>>496
>boundsに制約なんて意味はない
>trait boundsも、ある一定内の数値や、配列のインデックスなどのbounds checkingと同じく境界が定まる
制約という意味はあるよ
辞書にものってる

制約という訳語がそのまま載ってない辞書でも制限や許容範囲という訳語はあるはず
制限と制約は微妙に違う単語でニュアンスも違うけど状況によっては代わりに使える単語
英語でconstraintとrestrictionを使い分けるのに似てる
type restrictionとtype constraintのどちらが伝えたい意味に近いかという話と同じ

伝えたいニュアンスとは別に「型制約」という概念・用語がかなり昔から広く浸透してることを考えるとトレイト制限とトレイト制約を比べれば後者のほうがより適切と判断するのはごくごく自然なことだと思う
2025/03/15(土) 17:19:50.55ID:HIinARQ8
>>586
>trait bounds はある特性の範囲を表現するのみで
>それが何かを制約することはない

型パラメーターが自由に動ける範囲を制約するもの
そもそもboundsは単純な「範囲」という意味ではなく何かが許された範囲・領域のことで制約・制限的なものが必ずついて回る
2025/03/15(土) 17:21:45.08ID:tr5ODwiQ
「境界」という言葉のほうを軸にするなら満たす/満たさないではなく越える/越えないと言ったほうが自然かなとは思う。
2025/03/15(土) 17:25:50.05ID:tr5ODwiQ
でも技術用語は不自然なくらいで良いとも思う。
下手に日常用語の意味と合わせると仕様上の意味と日常の意味が混ざって混乱する。
「Rust 用語ではこういうんだよ!」で行くべき。
2025/03/15(土) 17:31:37.59ID:aXarc3PA
T: Traitは未知の型Tに対して可能(必要)な操作を明示するためのもので
Tの型に制限がかかるのはその結果にすぎないよ
Tの型を制限する目的で境界を設定してるわけではない

これはジェネリクスを含む型とか関数を実装する側になれば分かる
できるだけTの制限が緩くなるように配慮しないといけない
2025/03/15(土) 17:41:38.03ID:Th8G7jf3
Scala目指すのか。コップ本は挫折したな。共変半平
2025/03/15(土) 17:44:06.77ID:9va4ZYj7
>>584
boundsに制約の意味はない
何らかが有効な境界や限界を意味し
もしくはその境界線や境界面
もしくはその範囲や領域を意味する
そこに制約(constraints)という発想や概念はない

trait boundsも同様
ある型やサブトレイトに対してそのトレイトが境界となる
敢えて境界(bounds)という単語を用いており
訳語もそのままトレイト境界が望ましい
595デフォルトの名無しさん
垢版 |
2025/03/15(土) 17:44:31.55ID:suA91QDC
>>588
ANSI C からやり直せ
2025/03/15(土) 17:57:52.96ID:39/jPfqN
cargo test --test-threads=1
でシングルスレッド実行出来るけど
テスト用のプログラムの中からシングルスレッドを強制する方法は?
2025/03/15(土) 17:58:10.60ID:M+mqoQUv
例の爺さんまだ頑張ってるの?
その時間の使ってコードでも書けばいいのに
2025/03/15(土) 18:18:31.82ID:AcPGIkeS
>>592
リファレンスには制限するためのものだとはっきり書いてあるよ
Trait and lifetime bounds provide a way for generic items to restrict which types and lifetimes are used as their parameters.
https://doc.rust-lang.org/stable/reference/trait-bounds.html

もうこれで終わりかな?
2025/03/15(土) 18:27:44.91ID:5IRcwf8/
1) interfaceは境界
2) traitsはinterfaceに似たようなもの(although with some differences)
3) トレイト境界=頭痛が痛い

https://doc.rust-lang.org/book/ch10-02-traits.html
> Note: Traits are similar to a feature often called interfaces in other languages, although with some differences.
2025/03/15(土) 18:55:47.88ID:B1sOi1++
トレイト制約に決定したね
ここからは踏み絵フェーズ

正しくトレイト制約と言えない人がリアルでもヤバイ人
際立つ言動はネットだからと思うかも知れないが、Linuxのごたごたで明白になった通りリアルにゴロゴロいる
2025/03/15(土) 19:02:32.24ID:E7lv2JsK
決定も自己責任でいいんだよ自己責任で
決定の権限をコミュニティに握らせるな
2025/03/15(土) 19:10:23.94ID:LfHENop6
>>601
オライリー「せやからトレイト制約やで」
2025/03/15(土) 19:16:54.72ID:aXarc3PA
>>598
なんか最初のパラグラフだけで「もうこれで終わりかな?」とか言って読むの終わりにしてそう
リファレンスは全部目を通した方がいいと思うけど英語は最初のパラグラフ大事だから判断が難しいな

一応次のパラグラフも載せとく
Bounds on an item must be satisfied when using the item.
When type checking and borrow checking a generic item, the bounds can be used to determine that a trait is implemented for a type.
2025/03/15(土) 19:33:16.01ID:M+mqoQUv
ライフタイム境界
2025/03/15(土) 19:38:12.05ID:9va4ZYj7
>>600
boundsに制約の意味はない
トレイト制約は間違い
2025/03/15(土) 19:43:28.14ID:BxnZ1UiZ
boundsの意味は英英辞書的にはlimit
https://dictionary.cambridge.org/dictionary/english/bounds

limitの意味は最も大きい量や数値
https://dictionary.cambridge.org/dictionary/english/limit

なので境界でも良くねって思う。

あと制約はないかなぁ。
制限だったらまだわかる。
607デフォルトの名無しさん
垢版 |
2025/03/15(土) 19:46:52.98ID:suA91QDC
もはやお手上げだ
K&Rからやり直すことをお勧めする

traitを制約に使うことと
traitが制約であることは
全く別なのだ

この説明でもわからんのかな?
テキサスの小学生でもわかりそうなもんだが
2025/03/15(土) 19:52:07.05ID:ICPY9sLg
本当だ
ゴロゴロいる
2025/03/15(土) 19:52:24.06ID:0G30F5AB
>>606
ジェネリックパラメータの取りうる範囲が
trait boundsによって制限されるだけであって
トレイト制限やトレイト制約という表現はおかしい
この違いが重要

trait boundsは
トレイト限界か
トレイト境界なら正しい
トレイト境界で良いと思う
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況