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(土) 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は
トレイト限界か
トレイト境界なら正しい
トレイト境界で良いと思う
2025/03/15(土) 19:53:57.66ID:aXarc3PA
制約と誓約なら知ってる
2025/03/15(土) 20:02:57.98ID:M+mqoQUv
1~2人だけ制約ではないと言い張っている印象
2025/03/15(土) 20:04:24.77ID:5IRcwf8/
>>606
まさかの制限派出現嬉しい
境界、制約、制限の中で一番平易でヨシ
2025/03/15(土) 20:04:51.39ID:M+mqoQUv
トレイト境界 機能:型を制約します
ライフタイム境界 機能:コンパイラに寿命を示します
2025/03/15(土) 20:06:02.80ID:Th8G7jf3
オライリーで翻訳本出すのかい?
2025/03/15(土) 20:14:58.66ID:9va4ZYj7
>>611
どこにも記述されていない制約という言葉を唐突に持ち出してる人?
トレイト制約では根拠もなく意味も通らない
2025/03/15(土) 20:25:08.62ID:BMkcs71n
>>614,615
既にある
オライリー プログラミング Rust「トレイト制約」

トレイト制約は天下のオライリー本での訳語なので5chに限らずSNSやgithubで普通に提案できる
2025/03/15(土) 20:26:17.47ID:9va4ZYj7
>>616
だから根拠を示しなさい
制約に該当する英語すら見当たらない
2025/03/15(土) 20:26:33.32ID:BMkcs71n
QiitaやZennでも
2025/03/15(土) 20:27:24.54ID:BMkcs71n
>>617
本を見てくれ
2025/03/15(土) 20:30:16.76ID:9va4ZYj7
>>619
どういう根拠が書かれているの?
621デフォルトの名無しさん
垢版 |
2025/03/15(土) 20:30:49.53ID:suA91QDC
[0、9)という半開区間があったとして
これを数値範囲の制限に使ったとしても
半開区間を制約とは言わない
半開区間で示される数値の範囲を制約に使っただけである

これで理解できるか?
622デフォルトの名無しさん
垢版 |
2025/03/15(土) 20:33:16.68ID:suA91QDC
おいおい大丈夫か日本列島?
623デフォルトの名無しさん
垢版 |
2025/03/15(土) 20:33:57.45ID:MW+uPLNw
>>621
それは通常 bound と呼ばないものを持ち込んで無理にこじつけてないか?
2025/03/15(土) 20:35:41.76ID:YJDn0bnr
凡俗法則だっけ?
どうでもいい話題ほど盛り上がるってやつ
2025/03/15(土) 20:37:09.22ID:BxnZ1UiZ
オライリー教は難儀だなぁ
626デフォルトの名無しさん
垢版 |
2025/03/15(土) 20:38:46.91ID:suA91QDC
>>616 が誤解している可能性と
オライリーの質が落ちてる可能性と
二つの可能性が存在する
2025/03/15(土) 20:39:57.08ID:0G30F5AB
trait boundsはそのトレイトによる境界・限界・領域を表している
そこには制約の概念も意味も一切ない
そのtrait boundsによってパラメータの取り得る範囲が制限を受ける

以上の二つの事実を混同して
trait boundsをトレイト制限と呼ぶのはおかしい
ましてやトレイト制約と呼ぶのは論外
2025/03/15(土) 20:50:07.53ID:5IRcwf8/
https://github.com/rust-lang-ja/book-ja
ここ見てみたらそもそも最初はTatsuya Kawanoって人がいきなり書いた文章よね?
「トレイト境界」ってのは
それ以前にrustコミュニティでこの用語定義されてるの見たことある?
誰かrustの歴史に詳しい人ー
2025/03/15(土) 21:03:27.05ID:9va4ZYj7
>>628
そのissueで議論されている
・既に多くの人たちがブログetc.の記事でトレイト境界と書いていた
・Scalaでもboundsは境界と訳している
・配列のbounds checkも境界チェック
・制約と訳される場合は英語がconstraint
2025/03/15(土) 21:06:26.31ID:5IRcwf8/
わかった何がモヤってたのか
CならJIS規格があって用語も定義されてるからそれに倣えばいい
Javaなら開発元がご存命のときに日本語のドキュメントはすでにあったんでそれに倣えばいい
Rustの場合は現時点では規格が無いんよね
規格があったらそれがなんであれ書いてある用語に従うよねみんなが

>>628
それだけ?
2025/03/15(土) 21:27:59.47ID:E7lv2JsK
規格が重視されなくなったのは多分CPythonがCでライブラリを大量生産した歴史のおかげだ
2025/03/15(土) 21:31:58.75ID:0G30F5AB
trait boundsの概念の理解を間違えて「トレイト制約」だと誤認してしまった人は
>>627で指摘した二つの話を混同している
2025/03/15(土) 21:43:48.49ID:M+mqoQUv
おじいちゃんはいつも一人でわあわあ言って泡吹いてるよな

トレイト境界 機能:型を制約します
2025/03/15(土) 21:53:08.18ID:BxnZ1UiZ
「型を制約します」って言い回しとして変じゃない?
「型”に”制約を課します」だったらまだ理解はできる。
もっとも制約を課してるわけではないので、この言い回しも適切ではないと思う。
2025/03/15(土) 21:58:09.74ID:Poqgk2wF
>>628
そのリポジトリは比較的最近のやつで訳語は過去のを踏襲しただけ
一番最初のTRPL翻訳の該当するPRはおそらくこれかな
https://github.com/rust-lang-ja/the-rust-programming-language-ja/pull/38
2025/03/15(土) 21:58:24.13ID:M+mqoQUv
じゃあ何だったら気に入るんだ?
型を限定しますか?
2025/03/15(土) 22:09:45.50ID:BxnZ1UiZ
「型の境界を明示する / 明確に示す」とか?
これが適切かどうかはわからんけど。
2025/03/15(土) 22:13:14.41ID:tr5ODwiQ
>>630
それはそう。
その上で、 >>628 は実質的に規範の地位を確立してるからもう妥当性を検証するような段階は過ぎてる……と認識してる人とそうでない人がいるんだと思う。
出来の良し悪しを言うやつも多いがそんなことをいったら JIS だってたいしたクオリティじゃないし、それでもなお規範という「ことにする」ということで納得しないとしょうがないんだけどなぁ。
2025/03/15(土) 22:26:10.52ID:5IRcwf8/
>>635
ご丁寧にありがとうございます(>>629さんもあらためてありがとね)

https://qiita.com/_Nnwww/items/529ad0397e4b3a59da67
> ジェネリック関数は'トレイト束縛'と一緒に使えば最高に便利になります

初めて目にしたけど
正直良いやん!って思った
トレイト束縛
最初はこれだったんやね
2025/03/15(土) 22:31:03.74ID:E7lv2JsK
倫理的な「殺すな」「盗むな」等に比べて、言語的な規則が実在すると何故そんなに信じているのかが分からない
どっちも存在するか、あるいはどっちも存在しないと考えるのが自然ではないかね
2025/03/15(土) 22:36:16.49ID:tr5ODwiQ
>>639
束縛は変数束縛とかで使うニュアンスがすでに定着しているので違和感を持つ人が多いと思う。
2025/03/15(土) 23:01:56.75ID:Poqgk2wF
>>639
それ以降も訳語を変えてはどうかという話は何度も出ているけど
結局のところ誰も説得力のある代案を出せなかったからそのままになっている、って感じ
確かrust-jpのslackでもいろいろ議論はあったと記憶しているけど
slackの過去ログは消えたので詳細は分からなくなってしまったね
2025/03/15(土) 23:37:53.75ID:lrO4FCGW
今回は代案が明確だから決定した
2025/03/15(土) 23:56:12.71ID:E7lv2JsK
主語がでかいっていうか主語が確定してない
2025/03/16(日) 00:20:19.13ID:B4wnHsDg
日本における Rust 黎明期から特に翻訳に取り組もうとした人たちが相談して決めたことより自分のほうが妥当だと思える感性が信じられない。
2025/03/16(日) 01:02:58.08ID:PKYfY0wz
>>645
どこの馬の骨ともわからん有志が対した議論もせずに
JavaやScalaの誤った訳か機械翻訳を間違って採用しただけだろ

しっかりした議論が残ってればもう少し違う見方もできるけど
これに関してはどのイシューひどいじゃん
2025/03/16(日) 02:18:37.75ID:w3N6tLjW
もういいじゃんそんな細けーこと
2025/03/16(日) 02:46:42.41ID:yI9oTyRI
武器などの物体は正義でも悪でもないとよく言われる
それを買ったただの消費者が正しさに寄与する
ただの消費者のほうが正しい、ではなく、正しさに寄与するのは消費者だけなのだ
2025/03/16(日) 03:28:25.58ID:ur48jpVS
ぶっちゃけそれ系の訳の問題言うならあれvariantが列挙子って訳になってるのをまずやめてほしい
2025/03/16(日) 03:31:26.33ID:f6FIyYfU
>>639
trait bounds自体は束縛や制約という意味を全く含んでいないため
そのトレイト束縛という日本語訳はよろしくない

trait boundsのboundsの意味から有り得る日本語訳は
トレイト境界
トレイト限界
トレイト限度
トレイト範囲
つまりトレイトによる空間の線引きといった概念を表している

つまりtrait bounds自体には制約や束縛といった概念は全く含まれていないためそこは明確に区別する必要がある

そしてtrait boundsによって型パラメーターが制限される(restrict)
このような関係なのでtrait boundsに対してトレイト制限という日本語訳ももちろんよくない
トレイト境界が型パラメーターを制限する関係
2025/03/16(日) 03:34:24.31ID:ur48jpVS
Type: Traitの二項関係をsubtypingだと解釈すればtrait boundはlower bound(下界)を宣言していると見ることもできなくはないけど
でもsubtypingじゃねーから微妙に惜しいんだよな

線とか言ってるのはただのバカ
2025/03/16(日) 03:55:22.51ID:f6FIyYfU
>>651
そこまで理解していながら
空間を線引きを線だと思ってしまった?
線引きは概念だから少なくとも空間に対する線引きは線と無関係
有界を引き起こす存在と表現した方がお気に召す?
2025/03/16(日) 05:18:13.31ID:Mb92w3En
何か延びてると思ったら
トレイト警察うざすぎ
2025/03/16(日) 06:07:04.14ID:fZszb0GG
どちらも譲らないから延々このネタで盛り上がっていいんじゃないの
昔のム板では「importは輸入という訳語がいいかカタカナでインポートがいいか」ってレスバに花が咲いて何ヶ月も揉めたことがあるよ

あんときもアレコレ英語の語源とか意味とか出てきてみんな楽しかったなあ

英語ネタというか翻訳ネタはいい意味でプログラムの本質の理解度を試されるから、ム板ではアルゴリズムそのものより熱く語られる伝統がある
2025/03/16(日) 06:09:34.58ID:w3N6tLjW
ちゃうちゃう
バカでも参加できる話題だから盛り上がるんだよ
2025/03/16(日) 06:26:58.07ID:OYB6I5YT
まだ出ていないようなので

【「トレイト制約」と呼んではいけない理由】
プログラミング言語で広く確立されている用語として「型制約 (type constraint)」がある
これは各言語によって様々な条件を指定することで型(パラメータ)を制約することを指す
つまり型が制約される対象である
もし「トレイト制約」という用語を用いるとトレイトが制約される対象となってしまう
そのため英語でもtrait constraint (トレイト制約)という用語を用いていない
trait bound (トレイト境界)は条件側の一つである
657デフォルトの名無しさん
垢版 |
2025/03/16(日) 08:35:57.95ID:et8KMeeu
C++03からやり直せば理解が進むのでは?
2025/03/16(日) 08:44:56.04ID:MZvUgHKE
https://ejje.weblio.jp/content/bounds

日本語WordNet(英和)での「bounds」の意味
ものの限界または範囲を示す線あるいは面

EDR日英対訳辞書での「bounds」の意味
リミット;切り;埒;限り;方図;限界;限度

日英・英日専門用語辞書での「bounds」の意味
上下限,範囲,限度,限界

斎藤和英大辞典での「bounds」の意味
制限;範囲;極限;際涯;構内;切り;程;極際;限界

Weblio英和対訳辞書での「bounds」の意味
埒, 埓, 上下限, 境界, 限度, 果てし, 際限, 限り, 程
限り, 範囲, 限界, 〈際限〉・切り, 〈限度〉・程, 際限, 〈限界〉・極限, 限度
領域
バウンズ
2025/03/16(日) 09:19:47.84ID:QnytwJN4
そういや、日本語訳に文句のある人は最新のthe book の翻訳はしないの?

旧日本語版は情報が古いし公式からリンクを貼られているgithubのは翻訳している気配無いし。翻訳が間違っているなら、最新版の翻訳を用意すれば正しい方向に誘導できるんじゃないのかね。
2025/03/16(日) 09:28:08.49ID:OHAI5BZ5
境界がイメージしにくいとかじゃなくてboundsと言うワードが機能をうまく表現していない

boundsの訳を一生懸命模索してもそこがネックになる
訳語を離れると機能面で制約や限定などになる
2025/03/16(日) 09:31:22.26ID:B4wnHsDg
>>660
テクニカルタームはそういうもんなんだってば。
Rust ではこういう意味だと定義したならそれでいくしかないの。
2025/03/16(日) 09:56:09.74ID:OHAI5BZ5
自分は別に境界でも良いと思う
でも、理解しにくいとか納得できないと言う声が大きいならそれに対しても対応しないと
ユーザーが伸びない
2025/03/16(日) 10:05:35.57ID:YoyW4Wr9
bounds という単語に縛られすぎているw のかも

英語の方でも、ある概念を表すのに不十分ながら敢えてその単語を当てているということもあるだろうから
単語の訳にこだわるよりも概念の方にこだわるべきで、それを表す日本語の候補を挙げて適宜使い分けるとか
あるいは造語するとかした方が良いのかもね
2025/03/16(日) 11:14:15.60ID:OYB6I5YT
トレイト境界よりも良い候補がないんだよ
ちなみに
トレイト制約だけは>>656の理由で使用禁止なので
2025/03/16(日) 11:24:48.77ID:OHAI5BZ5
じゃあトレイト指定かトレイト制限で
2025/03/16(日) 11:26:44.63ID:OHAI5BZ5
トレイト限定 トレイト固定 トレイト制約 トレイト条件
2025/03/16(日) 11:48:31.73ID:lghBi3nK
where ~だからトレイト句 トレイト節で良かったのになあ
もともと英語からしてしっくり来てない人もいるのでは
2025/03/16(日) 11:53:59.91ID:OYB6I5YT
>>665 >>666
型制約や型制限や型限定をするために使われる側の話だから
トレイト制約やトレイト制限やトレイト限定は全てダメ
トレイトを限定(制約)していない
2025/03/16(日) 11:55:14.15ID:OHAI5BZ5
それはあなたの乾燥()ですよねとしか

実際に制限され限定され固定され制約されているんだけど
2025/03/16(日) 11:57:24.55ID:Mb92w3En
parameterを媒介変数って訳したのも誤訳だと思います
2025/03/16(日) 11:58:52.71ID:/wKHKA1M
>>650
>trait bounds自体は束縛や制約という意味を全く含んでいないため
制約という意味は含まれてるよ
辞書的にもboundsの和訳として「制約」が使われてるものがあるし
文脈的にもtrait boundsは型制約(type constraints)の一つの方法だから「制約」と訳すことに大きな問題はない

束縛はbindの過去分詞のboundから取ってるもので
これは同じスペルの違う単語なので「境界」以上にやめたほうがいい
2025/03/16(日) 11:59:25.88ID:OHAI5BZ5
将来的になんらかの機能が拡張されて制約が生じるのがトレイトだけで無くなった場合どうするんだろうかとは思う
2025/03/16(日) 12:16:16.76ID:OYB6I5YT
>>671
型制約は型を制約するんだよ
トレイト制約はトレイトを制約するわけではないから誤解を招くでしょ
だからトレイト制約(trait constraint)という表現は英語版でも使われていないの
2025/03/16(日) 12:22:14.60ID:/wKHKA1M
>>650
>そしてtrait boundsによって型パラメーターが制限される(restrict)
>トレイト境界が型パラメーターを制限する関係

実装すべきトレイトを指定することで型パラメーターが取れる型の範囲を制限するのがtrait bounds
型パラメーターを制限するという意味を持たないのはあくまで”指定するトレイト”であってboundsにはすでに制限という意味が付随してる

これはboundsという英単語がもともと持っているものでもありtrait boundsでもその意味が付随している
2025/03/16(日) 12:33:45.83ID:OYB6I5YT
>>674
根本的な違いを理解しようよ

型は制限(制約)される側
だから型制限や型制約と言われる

トレイトは制限(制約)する側
だからトレイト制限やトレイト制約とは言わない
2025/03/16(日) 12:35:35.73ID:ljG29Uc3
Cで言えばvoid*をint*へキャストしてint変数を四則演算可能にする概念をboundsと呼んでるようなもので
型で制約するためにメモリ上へ境界を作ってると解釈してるわ
Rustはんではそないに呼びはりますか、どないでもよろしおすレベルなんだが、
メモリやストライドの意識がないとこんなんで盛り上がれるんだな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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