公式
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+1pIyvG524デフォルトの名無しさん
2025/03/15(土) 10:51:10.99ID:M+mqoQUv 自由度なんて何も考えなくても理解出来るだろ…
思い込みを直す機会だぞ
なんなら大学に行って数学と情報学を学べばいい
思い込みを直す機会だぞ
なんなら大学に行って数学と情報学を学べばいい
525デフォルトの名無しさん
2025/03/15(土) 10:52:21.41ID:ub1zWmmn526デフォルトの名無しさん
2025/03/15(土) 10:54:27.10ID:ub1zWmmn527デフォルトの名無しさん
2025/03/15(土) 11:00:14.62ID:M+mqoQUv >>526
学生と言うクラスに対してそれが三角形なのかと言う問いはおかしく見えるが
学生であり三角形でもある可能性もある
トレイトが実装されていなくても同等の機能が実装されている可能性もある
一概にトレイトが実装されているから高機能であると言う論は当てはまらない
ある機能を使う場合に対象となるものがトレイトを実装されているものに限定されているだけ
これはただの制約でしかない
学生と言うクラスに対してそれが三角形なのかと言う問いはおかしく見えるが
学生であり三角形でもある可能性もある
トレイトが実装されていなくても同等の機能が実装されている可能性もある
一概にトレイトが実装されているから高機能であると言う論は当てはまらない
ある機能を使う場合に対象となるものがトレイトを実装されているものに限定されているだけ
これはただの制約でしかない
528デフォルトの名無しさん
2025/03/15(土) 11:03:33.75ID:M+mqoQUv トレイト境界 トレイト制約 トレイト要求 トレイト条件 トレイト限定
whereでトレイトを限定しているので指定の自由度は低くなっている
whereでトレイトを限定しているので指定の自由度は低くなっている
529デフォルトの名無しさん
2025/03/15(土) 11:10:08.04ID:ub1zWmmn >>527
プログラムを書いたことないのかな?
impl Display for T した時にそれはDisplay機能を追加したのであって制約したわけではない
fn foo<T: Display>() した時もそれはDisplay機能を追加したのであって制約したわけではない
もちろん逆の視点で見れば制約になるのは当たり前だが逆の視点で見る必要がない
普通の視点ではDisplay機能が増えて利便性が上がったと解釈する
その機能を持つ線引きとしてトレイト境界がある
これをトレイト制約と訳すのは違和感ありまくりの間違いだ
プログラムを書いたことないのかな?
impl Display for T した時にそれはDisplay機能を追加したのであって制約したわけではない
fn foo<T: Display>() した時もそれはDisplay機能を追加したのであって制約したわけではない
もちろん逆の視点で見れば制約になるのは当たり前だが逆の視点で見る必要がない
普通の視点ではDisplay機能が増えて利便性が上がったと解釈する
その機能を持つ線引きとしてトレイト境界がある
これをトレイト制約と訳すのは違和感ありまくりの間違いだ
530デフォルトの名無しさん
2025/03/15(土) 11:11:57.53ID:ub1zWmmn531デフォルトの名無しさん
2025/03/15(土) 11:15:38.63ID:M+mqoQUv532デフォルトの名無しさん
2025/03/15(土) 11:16:16.66ID:M+mqoQUv >>530
わざと馬鹿な振りしてるのか?普通に馬鹿なのかどっちなんだ?
わざと馬鹿な振りしてるのか?普通に馬鹿なのかどっちなんだ?
533デフォルトの名無しさん
2025/03/15(土) 11:19:12.75ID:M+mqoQUv トレイト境界 訳語でぐぐったら出来たぞ
https://github.com/rust-lang-ja/book-ja/issues/172
> その型がとりうる値を制限し、より具体的な型を定義する
制約を含んでいる
https://github.com/rust-lang-ja/book-ja/issues/172
> その型がとりうる値を制限し、より具体的な型を定義する
制約を含んでいる
534デフォルトの名無しさん
2025/03/15(土) 11:21:18.09ID:ub1zWmmn >>531
真逆の視点で見れば制約と解釈できるのは当たり前
しかしそんなバカな視点持つ人はいない
デフォルトとAnyトレイトしか使えない不便で制約が最大の状態から
各トレイト境界により各トレイト機能を使えるように制限を解放していくのがトレイト境界のプログラミングほ本質
「トレイト制約」派は頭がおかしい
真逆の視点で見れば制約と解釈できるのは当たり前
しかしそんなバカな視点持つ人はいない
デフォルトとAnyトレイトしか使えない不便で制約が最大の状態から
各トレイト境界により各トレイト機能を使えるように制限を解放していくのがトレイト境界のプログラミングほ本質
「トレイト制約」派は頭がおかしい
535デフォルトの名無しさん
2025/03/15(土) 11:23:51.41ID:M+mqoQUv >>534
相手に対して決めつけたベン図的な考えをしてるのが間違い
自分はトレイト制約にしろとはいってない
ただトレイト境界は制限を含んだものだと言ってる
自由度が低くなると言っている
トレイト境界で自由度が高くなると言うポンコツと意見が対立するのは当たり前
相手に対して決めつけたベン図的な考えをしてるのが間違い
自分はトレイト制約にしろとはいってない
ただトレイト境界は制限を含んだものだと言ってる
自由度が低くなると言っている
トレイト境界で自由度が高くなると言うポンコツと意見が対立するのは当たり前
536デフォルトの名無しさん
2025/03/15(土) 11:26:39.91ID:M+mqoQUv 学生であり三角形の可能性としては
名前が 三角 形さんである場合が当てはまる
その人は学生であり三角形
名前が 三角 形さんである場合が当てはまる
その人は学生であり三角形
537デフォルトの名無しさん
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としか書かれてないジェネリクス関数は文字通り「何でも渡せる」から、これが一番制約が少ない
もしかして impl X for Foo のように「トレイトを実装する」ことを trait bound と思ってる?
trait bound は「この関数に渡せる型Tは〇〇を満たさなければならない」の意味だよ?
Tとしか書かれてないジェネリクス関数は文字通り「何でも渡せる」から、これが一番制約が少ない
539デフォルトの名無しさん
2025/03/15(土) 11:34:15.16ID:ub1zWmmn >>535
何度言っても理解しようとしないやつだな
非現実的な視点としてそこでは使わない非該当な型からみれば、その型は使えないのだから制限となるのは当たり前だ
そんなプログラミングとかけ離れた非現実的な視点でみるのはおかしい
プログラミングの視点では各トレイト境界を増やすことでその関数でできることが増えて制限から解放される
何度言っても理解しようとしないやつだな
非現実的な視点としてそこでは使わない非該当な型からみれば、その型は使えないのだから制限となるのは当たり前だ
そんなプログラミングとかけ離れた非現実的な視点でみるのはおかしい
プログラミングの視点では各トレイト境界を増やすことでその関数でできることが増えて制限から解放される
540デフォルトの名無しさん
2025/03/15(土) 11:40:22.78ID:ub1zWmmn >>538
その真逆な視点から見れば制約になるのはの当たり前だとずっと言ってるだろ
どちらを制約と捉えるかの問題
Anyしか何もできない<T>が最も制約されている状況
それに対して<T: Trait>とトレイト境界を課すことで制約がなくなって使える機能が増えていく
その真逆な視点から見れば制約になるのはの当たり前だとずっと言ってるだろ
どちらを制約と捉えるかの問題
Anyしか何もできない<T>が最も制約されている状況
それに対して<T: Trait>とトレイト境界を課すことで制約がなくなって使える機能が増えていく
541デフォルトの名無しさん
2025/03/15(土) 11:41:12.38ID:M+mqoQUv >>539
トレイト境界に対しては真逆だろ
プログラミングの視点で見てもトレイト境界を増やすことで制限が増えて対象への制約が増える
実装でトレイトにあたる部分を使用しているかどうかはどうであれ自由度が減る
こんな当たり前のことすら理解できないのか?
トレイト境界に対しては真逆だろ
プログラミングの視点で見てもトレイト境界を増やすことで制限が増えて対象への制約が増える
実装でトレイトにあたる部分を使用しているかどうかはどうであれ自由度が減る
こんな当たり前のことすら理解できないのか?
542デフォルトの名無しさん
2025/03/15(土) 11:43:24.52ID:M12uOjVK あえて造語すれば機能域とかになるのかな
制約とか機能が増えるとかは視点によって出てくる結果だろう
制約とか機能が増えるとかは視点によって出てくる結果だろう
543デフォルトの名無しさん
2025/03/15(土) 11:46:45.42ID:ub1zWmmn >>541
その180度逆の視点で見れば制約になるのは当たり前だがそんな視点でプログラミングは行われない
「トレイト境界」により「制約された」とは考えることはなく
「(制限されてる状態から)使える機能が増えた」と考える
その180度逆の視点で見れば制約になるのは当たり前だがそんな視点でプログラミングは行われない
「トレイト境界」により「制約された」とは考えることはなく
「(制限されてる状態から)使える機能が増えた」と考える
544デフォルトの名無しさん
2025/03/15(土) 11:50:54.00ID:ub1zWmmn >>542
その通り
視点によって両方が起こる
だからそこ「トレイト制約」ではなく「トレイト境界」が正しい
各トレイト境界により線引きされて境界が定まるだけ
それにより使える機能が増えて便利になることがプログラミングの本質
制約されて不便になったとは考えない
その通り
視点によって両方が起こる
だからそこ「トレイト制約」ではなく「トレイト境界」が正しい
各トレイト境界により線引きされて境界が定まるだけ
それにより使える機能が増えて便利になることがプログラミングの本質
制約されて不便になったとは考えない
545デフォルトの名無しさん
2025/03/15(土) 11:54:54.99ID:M+mqoQUv >>543
脱線になるが自由度の意味が判ってない
三角形なら基礎的なルール(三つの角度を合わせると180度など)守っていれば辺の長さや角度は自由に設定できる 自由度が高い
二等辺三角形は二辺の長さが同じと言う制約がありその他にも角度が制限される 自由度が低い
二等辺三角形は自由度が低いがそのために角度などを利用して他の隣接した線分などとの角度が確定できるようになる
自由度は減っているが他から見ると利用価値がただの三角形から上がってる
脱線になるが自由度の意味が判ってない
三角形なら基礎的なルール(三つの角度を合わせると180度など)守っていれば辺の長さや角度は自由に設定できる 自由度が高い
二等辺三角形は二辺の長さが同じと言う制約がありその他にも角度が制限される 自由度が低い
二等辺三角形は自由度が低いがそのために角度などを利用して他の隣接した線分などとの角度が確定できるようになる
自由度は減っているが他から見ると利用価値がただの三角形から上がってる
546デフォルトの名無しさん
2025/03/15(土) 11:57:50.75ID:5IRcwf8/ 制限なしの型パラメータを制限してるだけでしょ
<T> ←制限ナシ
<T: Eq> ←Eqで制限
<T: Copy> ←Copyで制限
<T: Eq + Copy> ←Eq+Copyで制限
制約って言ってる人の感覚のほうが俺も近い
(型パラメータの型を)制約ってことでしょ
> 使える機能が増えて便利になることがプログラミングの本質
そんな主張生まれて初めて目にしたわ正直w
<T> ←制限ナシ
<T: Eq> ←Eqで制限
<T: Copy> ←Copyで制限
<T: Eq + Copy> ←Eq+Copyで制限
制約って言ってる人の感覚のほうが俺も近い
(型パラメータの型を)制約ってことでしょ
> 使える機能が増えて便利になることがプログラミングの本質
そんな主張生まれて初めて目にしたわ正直w
547デフォルトの名無しさん
2025/03/15(土) 12:03:05.22ID:M+mqoQUv 自由度すら理解できないなんて
この人いつもの長文でおかしなRust擁護書いてる人かな?
この人いつもの長文でおかしなRust擁護書いてる人かな?
548デフォルトの名無しさん
2025/03/15(土) 12:04:44.44ID:ub1zWmmn >>546
その真逆の不自然な視点を取ることももちろん可能だが
普通はこちらの視点
<T> ←(Any以外)何もできず制限最大
<T: Eq> ←Eqが使えるようになる
<T: Copy> ←Copyが使えるようになる
<T: Eq + Copy> ←EqもCopyも使えるようになる
制約を増やしているのではなく
機能を増やしている
だからトレイト制約なんていうバカな呼び方を採用しない
その真逆の不自然な視点を取ることももちろん可能だが
普通はこちらの視点
<T> ←(Any以外)何もできず制限最大
<T: Eq> ←Eqが使えるようになる
<T: Copy> ←Copyが使えるようになる
<T: Eq + Copy> ←EqもCopyも使えるようになる
制約を増やしているのではなく
機能を増やしている
だからトレイト制約なんていうバカな呼び方を採用しない
549デフォルトの名無しさん
2025/03/15(土) 12:07:05.48ID:qQFYiVQo >>523
そう思うならトレイト視界を使ってくれ
そう思うならトレイト視界を使ってくれ
550デフォルトの名無しさん
2025/03/15(土) 12:10:13.35ID:ub1zWmmn551デフォルトの名無しさん
2025/03/15(土) 12:10:26.25ID:5IRcwf8/ 型を制限してるんよね
機能がどうのこうのの以前にね
これって理解するの難しいのかなあ
機能がどうのこうのの以前にね
これって理解するの難しいのかなあ
552デフォルトの名無しさん
2025/03/15(土) 12:13:27.59ID:ub1zWmmn553デフォルトの名無しさん
2025/03/15(土) 12:16:19.89ID:ub1zWmmn554デフォルトの名無しさん
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はどれ?トレイト境界で自由度が増えるなんて馬鹿はいない
vec<T>
vec<T>:where T Eq
vec<T>:where T:Copy
vec<T>:where Eq + Copy
自由度が高いvecはどれ?トレイト境界で自由度が増えるなんて馬鹿はいない
555デフォルトの名無しさん
2025/03/15(土) 12:23:05.50ID:ub1zWmmn >>554
二つの視点を理解できた?
さらにその問題ならVecの視点とTの視点でさらに二つ分かれる
もちろんトレイト境界はTに対するものだからTの視点が普通人の視点
トレイト境界が何もなければTに対して何もできないから一番不自由な状態
二つの視点を理解できた?
さらにその問題ならVecの視点とTの視点でさらに二つ分かれる
もちろんトレイト境界はTに対するものだからTの視点が普通人の視点
トレイト境界が何もなければTに対して何もできないから一番不自由な状態
556デフォルトの名無しさん
2025/03/15(土) 12:24:50.62ID:E7lv2JsK 「自己責任」の語源という噂もあるIT界隈ってやっぱ最先端なんだな
自由と制約
性善説と性悪説
なんでもITで定義できる
自由と制約
性善説と性悪説
なんでもITで定義できる
557デフォルトの名無しさん
2025/03/15(土) 12:24:54.00ID:5IRcwf8/ <T: Eq>で考えたとき
「: Eq」はどこにかかってんのか?
「T」でしょ、それ以外ではないでしょ?
で「T]は何かっていうと型でしょ?
この話のどこに「機能」とやらが出てきたの?
片方の視点もなにも、そもそもの話が
「: Eq」はどこにかかってんのか?
「T」でしょ、それ以外ではないでしょ?
で「T]は何かっていうと型でしょ?
この話のどこに「機能」とやらが出てきたの?
片方の視点もなにも、そもそもの話が
558デフォルトの名無しさん
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
https://doc.rust-lang.org/reference/trait-bounds.html
560デフォルトの名無しさん
2025/03/15(土) 12:32:15.55ID:ub1zWmmn >>557
各トレイトは各々の特性という機能を宣言している
Tという型が何をすることができるものかをトレイト境界で指定していく
ちなみに何度も言っているが
Tという抽象型自体の視点ではなくて、Tに入りうる具体型候補の集合という裏の視点で見れば、トレイト境界が制約になることはもちろん理解している
そんな偏った視点で考えるのはおかしいと主張しているだけ
だから「トレイト制約」というアホな用語は絶対に許容しない
各トレイトは各々の特性という機能を宣言している
Tという型が何をすることができるものかをトレイト境界で指定していく
ちなみに何度も言っているが
Tという抽象型自体の視点ではなくて、Tに入りうる具体型候補の集合という裏の視点で見れば、トレイト境界が制約になることはもちろん理解している
そんな偏った視点で考えるのはおかしいと主張しているだけ
だから「トレイト制約」というアホな用語は絶対に許容しない
561デフォルトの名無しさん
2025/03/15(土) 12:34:54.10ID:M+mqoQUv 文系が誤魔化しに来ている
562デフォルトの名無しさん
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.
> 特性と有効期間の境界は、汎用アイテムがパラメータとして使用される型と有効期間を制限する方法を提供します
はいこれ
型を制限なのです
恥ずかしながらそれ読んだことなかったw
> Trait and lifetime bounds provide a way for generic items to restrict which types and lifetimes are used as their parameters.
> 特性と有効期間の境界は、汎用アイテムがパラメータとして使用される型と有効期間を制限する方法を提供します
はいこれ
型を制限なのです
563デフォルトの名無しさん
2025/03/15(土) 12:41:26.07ID:M+mqoQUv564デフォルトの名無しさん
2025/03/15(土) 12:41:44.05ID:ub1zWmmn 言った通りだろ
T自体ではなくTに入りうる具体型候補の集合で考えればもちろん制限になる
T自体ではなくTに入りうる具体型候補の集合で考えればもちろん制限になる
565デフォルトの名無しさん
2025/03/15(土) 12:43:19.33ID:ub1zWmmn566デフォルトの名無しさん
2025/03/15(土) 12:50:29.91ID:M+mqoQUv トレイト境界 機能:型を制約します
その一方で
「トレイト制約は不自然だ~」
これは無いな
その一方で
「トレイト制約は不自然だ~」
これは無いな
567デフォルトの名無しさん
2025/03/15(土) 12:58:39.76ID:ub1zWmmn568デフォルトの名無しさん
2025/03/15(土) 13:09:12.24ID:MW+uPLNw >>567
bound が「線引き」だとして、例えばRustコンパイラが出す以下のメッセージはどう訳すの?
Error: the trait bound is not satisfied
「制約を満たさない」からエラー、という方が自然じゃない?
bound が「線引き」だとして、例えばRustコンパイラが出す以下のメッセージはどう訳すの?
Error: the trait bound is not satisfied
「制約を満たさない」からエラー、という方が自然じゃない?
569デフォルトの名無しさん
2025/03/15(土) 13:22:26.55ID:ub1zWmmn >>568
文字通りにトレイト境界を満たさないだよ
例えば具体的に Error: the trait bound 'TypeA: TraitB' is not satisfied と指摘される
つまりこのトレイト境界を満たさないとは
TypeAはTraitB(の機能)を実装していない、という意味
文字通りにトレイト境界を満たさないだよ
例えば具体的に Error: the trait bound 'TypeA: TraitB' is not satisfied と指摘される
つまりこのトレイト境界を満たさないとは
TypeAはTraitB(の機能)を実装していない、という意味
570デフォルトの名無しさん
2025/03/15(土) 13:23:13.31ID:MW+uPLNw 「トレイト境界」という言葉が既に用語として認識されている感はあるし、「トレイト境界を満たさない」と書いても実用上は伝わると思うけど
「境界線を満たす」のように、satisfyの目的語が線になることはないと思う
「境界線を満たす」のように、satisfyの目的語が線になることはないと思う
571デフォルトの名無しさん
2025/03/15(土) 13:24:22.65ID:e4F+UdWA トレイトも日本語に訳した方がいいよね
572デフォルトの名無しさん
2025/03/15(土) 13:26:47.33ID:ub1zWmmn573デフォルトの名無しさん
2025/03/15(土) 13:28:22.19ID:qQFYiVQo imple S {}
を全面的に禁止して
imple T for S {}
だけしか使えない環境にするべきだったね
を全面的に禁止して
imple T for S {}
だけしか使えない環境にするべきだったね
574デフォルトの名無しさん
2025/03/15(土) 13:35:57.03ID:ub1zWmmn575デフォルトの名無しさん
2025/03/15(土) 13:38:34.38ID:tBWUFgvS576デフォルトの名無しさん
2025/03/15(土) 13:43:15.55ID:ub1zWmmn577デフォルトの名無しさん
2025/03/15(土) 14:20:09.90ID:E7lv2JsK 二項演算を使いたいだけなのに単位元の定義を強制されるパターンはたまにある
制約がないと言えるのは、使いたい関数の名前とトレイトの名前が同じやつだ
制約がないと言えるのは、使いたい関数の名前とトレイトの名前が同じやつだ
578デフォルトの名無しさん
2025/03/15(土) 14:32:56.25ID:WVXVz4wb なんか伸びてるけどトレイトのようなものは他言語でもよくあるでしょうに
ジェネリックくらいちゃんと理解しとけ
ジェネリックくらいちゃんと理解しとけ
579デフォルトの名無しさん
2025/03/15(土) 14:46:17.14ID:Th8G7jf3 PHPだね
580デフォルトの名無しさん
2025/03/15(土) 14:47:12.31ID:Th8G7jf3 Pythonにはトレイト無いんだよね
581デフォルトの名無しさん
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って呼び方なんだな
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からやり直すべき
C++03からやり直すべき
583デフォルトの名無しさん
2025/03/15(土) 15:19:39.28ID:MW+uPLNw >>582
このスレで出てる話は trait でなく trait bound という言葉についてだぞ
このスレで出てる話は trait でなく trait bound という言葉についてだぞ
584デフォルトの名無しさん
2025/03/15(土) 16:39:04.00ID:HIinARQ8 >>570
日本語では「境界を満たしていません」なんて言い方はしないんだよ
質の悪い機械翻訳以外ではね
現代日本語の「境界」は境界線や境目のことであって境界づけられた範囲や領域を指して「境界」とは言わない
“bound is not satisfied”や”requird by this bound”などからもわかるようにRustを開発してる中の人も明らかに制約面を重視してboundsという用語を使っている
それだけじゃなくtrait boundsはジェネリックの型パラメーターの型制約の一種
ジェネリックにおける「型制約」という用語はRustに限らずプログラミングの概念として広く定着しているものでRustでももちろん使われている
それらを完全に無視して無理のある「境界」という訳語を当ててこじつけ解釈を続けるメリットは何もない
日本語では「境界を満たしていません」なんて言い方はしないんだよ
質の悪い機械翻訳以外ではね
現代日本語の「境界」は境界線や境目のことであって境界づけられた範囲や領域を指して「境界」とは言わない
“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 はある特性の範囲を表現するのみで
それが何かを制約することはない
これで理解しないならお手上げだ
それが何かを制約することはない
trait bounds はある特性の範囲を表現するのみで
それが何かを制約することはない
これで理解しないならお手上げだ
587デフォルトの名無しさん
2025/03/15(土) 17:09:42.34ID:suA91QDC 日本に匙を投げる日は近い
備えよ
備えよ
588デフォルトの名無しさん
2025/03/15(土) 17:13:39.17ID:HIinARQ8 >>496
>boundsに制約なんて意味はない
>trait boundsも、ある一定内の数値や、配列のインデックスなどのbounds checkingと同じく境界が定まる
制約という意味はあるよ
辞書にものってる
制約という訳語がそのまま載ってない辞書でも制限や許容範囲という訳語はあるはず
制限と制約は微妙に違う単語でニュアンスも違うけど状況によっては代わりに使える単語
英語でconstraintとrestrictionを使い分けるのに似てる
type restrictionとtype constraintのどちらが伝えたい意味に近いかという話と同じ
伝えたいニュアンスとは別に「型制約」という概念・用語がかなり昔から広く浸透してることを考えるとトレイト制限とトレイト制約を比べれば後者のほうがより適切と判断するのはごくごく自然なことだと思う
>boundsに制約なんて意味はない
>trait boundsも、ある一定内の数値や、配列のインデックスなどのbounds checkingと同じく境界が定まる
制約という意味はあるよ
辞書にものってる
制約という訳語がそのまま載ってない辞書でも制限や許容範囲という訳語はあるはず
制限と制約は微妙に違う単語でニュアンスも違うけど状況によっては代わりに使える単語
英語でconstraintとrestrictionを使い分けるのに似てる
type restrictionとtype constraintのどちらが伝えたい意味に近いかという話と同じ
伝えたいニュアンスとは別に「型制約」という概念・用語がかなり昔から広く浸透してることを考えるとトレイト制限とトレイト制約を比べれば後者のほうがより適切と判断するのはごくごく自然なことだと思う
589デフォルトの名無しさん
2025/03/15(土) 17:19:50.55ID:HIinARQ8 >>586
>trait bounds はある特性の範囲を表現するのみで
>それが何かを制約することはない
型パラメーターが自由に動ける範囲を制約するもの
そもそもboundsは単純な「範囲」という意味ではなく何かが許された範囲・領域のことで制約・制限的なものが必ずついて回る
>trait bounds はある特性の範囲を表現するのみで
>それが何かを制約することはない
型パラメーターが自由に動ける範囲を制約するもの
そもそもboundsは単純な「範囲」という意味ではなく何かが許された範囲・領域のことで制約・制限的なものが必ずついて回る
590デフォルトの名無しさん
2025/03/15(土) 17:21:45.08ID:tr5ODwiQ 「境界」という言葉のほうを軸にするなら満たす/満たさないではなく越える/越えないと言ったほうが自然かなとは思う。
591デフォルトの名無しさん
2025/03/15(土) 17:25:50.05ID:tr5ODwiQ でも技術用語は不自然なくらいで良いとも思う。
下手に日常用語の意味と合わせると仕様上の意味と日常の意味が混ざって混乱する。
「Rust 用語ではこういうんだよ!」で行くべき。
下手に日常用語の意味と合わせると仕様上の意味と日常の意味が混ざって混乱する。
「Rust 用語ではこういうんだよ!」で行くべき。
592デフォルトの名無しさん
2025/03/15(土) 17:31:37.59ID:aXarc3PA T: Traitは未知の型Tに対して可能(必要)な操作を明示するためのもので
Tの型に制限がかかるのはその結果にすぎないよ
Tの型を制限する目的で境界を設定してるわけではない
これはジェネリクスを含む型とか関数を実装する側になれば分かる
できるだけTの制限が緩くなるように配慮しないといけない
Tの型に制限がかかるのはその結果にすぎないよ
Tの型を制限する目的で境界を設定してるわけではない
これはジェネリクスを含む型とか関数を実装する側になれば分かる
できるだけTの制限が緩くなるように配慮しないといけない
593デフォルトの名無しさん
2025/03/15(土) 17:41:38.03ID:Th8G7jf3 Scala目指すのか。コップ本は挫折したな。共変半平
594デフォルトの名無しさん
2025/03/15(土) 17:44:06.77ID:9va4ZYj7 >>584
boundsに制約の意味はない
何らかが有効な境界や限界を意味し
もしくはその境界線や境界面
もしくはその範囲や領域を意味する
そこに制約(constraints)という発想や概念はない
trait boundsも同様
ある型やサブトレイトに対してそのトレイトが境界となる
敢えて境界(bounds)という単語を用いており
訳語もそのままトレイト境界が望ましい
boundsに制約の意味はない
何らかが有効な境界や限界を意味し
もしくはその境界線や境界面
もしくはその範囲や領域を意味する
そこに制約(constraints)という発想や概念はない
trait boundsも同様
ある型やサブトレイトに対してそのトレイトが境界となる
敢えて境界(bounds)という単語を用いており
訳語もそのままトレイト境界が望ましい
595デフォルトの名無しさん
2025/03/15(土) 17:44:31.55ID:suA91QDC >>588
ANSI C からやり直せ
ANSI C からやり直せ
596デフォルトの名無しさん
2025/03/15(土) 17:57:52.96ID:39/jPfqN cargo test --test-threads=1
でシングルスレッド実行出来るけど
テスト用のプログラムの中からシングルスレッドを強制する方法は?
でシングルスレッド実行出来るけど
テスト用のプログラムの中からシングルスレッドを強制する方法は?
597デフォルトの名無しさん
2025/03/15(土) 17:58:10.60ID:M+mqoQUv 例の爺さんまだ頑張ってるの?
その時間の使ってコードでも書けばいいのに
その時間の使ってコードでも書けばいいのに
598デフォルトの名無しさん
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
もうこれで終わりかな?
リファレンスには制限するためのものだとはっきり書いてあるよ
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
もうこれで終わりかな?
599デフォルトの名無しさん
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.
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.
600デフォルトの名無しさん
2025/03/15(土) 18:55:47.88ID:B1sOi1++ トレイト制約に決定したね
ここからは踏み絵フェーズ
正しくトレイト制約と言えない人がリアルでもヤバイ人
際立つ言動はネットだからと思うかも知れないが、Linuxのごたごたで明白になった通りリアルにゴロゴロいる
ここからは踏み絵フェーズ
正しくトレイト制約と言えない人がリアルでもヤバイ人
際立つ言動はネットだからと思うかも知れないが、Linuxのごたごたで明白になった通りリアルにゴロゴロいる
601デフォルトの名無しさん
2025/03/15(土) 19:02:32.24ID:E7lv2JsK 決定も自己責任でいいんだよ自己責任で
決定の権限をコミュニティに握らせるな
決定の権限をコミュニティに握らせるな
602デフォルトの名無しさん
2025/03/15(土) 19:10:23.94ID:LfHENop6 >>601
オライリー「せやからトレイト制約やで」
オライリー「せやからトレイト制約やで」
603デフォルトの名無しさん
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.
なんか最初のパラグラフだけで「もうこれで終わりかな?」とか言って読むの終わりにしてそう
リファレンスは全部目を通した方がいいと思うけど英語は最初のパラグラフ大事だから判断が難しいな
一応次のパラグラフも載せとく
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.
604デフォルトの名無しさん
2025/03/15(土) 19:33:16.01ID:M+mqoQUv ライフタイム境界
605デフォルトの名無しさん
2025/03/15(土) 19:38:12.05ID:9va4ZYj7606デフォルトの名無しさん
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
なので境界でも良くねって思う。
あと制約はないかなぁ。
制限だったらまだわかる。
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が制約であることは
全く別なのだ
この説明でもわからんのかな?
テキサスの小学生でもわかりそうなもんだが
K&Rからやり直すことをお勧めする
traitを制約に使うことと
traitが制約であることは
全く別なのだ
この説明でもわからんのかな?
テキサスの小学生でもわかりそうなもんだが
608デフォルトの名無しさん
2025/03/15(土) 19:52:07.05ID:ICPY9sLg 本当だ
ゴロゴロいる
ゴロゴロいる
609デフォルトの名無しさん
2025/03/15(土) 19:52:24.06ID:0G30F5AB >>606
ジェネリックパラメータの取りうる範囲が
trait boundsによって制限されるだけであって
トレイト制限やトレイト制約という表現はおかしい
この違いが重要
trait boundsは
トレイト限界か
トレイト境界なら正しい
トレイト境界で良いと思う
ジェネリックパラメータの取りうる範囲が
trait boundsによって制限されるだけであって
トレイト制限やトレイト制約という表現はおかしい
この違いが重要
trait boundsは
トレイト限界か
トレイト境界なら正しい
トレイト境界で良いと思う
610デフォルトの名無しさん
2025/03/15(土) 19:53:57.66ID:aXarc3PA 制約と誓約なら知ってる
611デフォルトの名無しさん
2025/03/15(土) 20:02:57.98ID:M+mqoQUv 1~2人だけ制約ではないと言い張っている印象
612デフォルトの名無しさん
2025/03/15(土) 20:04:24.77ID:5IRcwf8/613デフォルトの名無しさん
2025/03/15(土) 20:04:51.39ID:M+mqoQUv トレイト境界 機能:型を制約します
ライフタイム境界 機能:コンパイラに寿命を示します
ライフタイム境界 機能:コンパイラに寿命を示します
614デフォルトの名無しさん
2025/03/15(土) 20:06:02.80ID:Th8G7jf3 オライリーで翻訳本出すのかい?
615デフォルトの名無しさん
2025/03/15(土) 20:14:58.66ID:9va4ZYj7616デフォルトの名無しさん
2025/03/15(土) 20:25:08.62ID:BMkcs71n617デフォルトの名無しさん
2025/03/15(土) 20:26:17.47ID:9va4ZYj7618デフォルトの名無しさん
2025/03/15(土) 20:26:33.32ID:BMkcs71n QiitaやZennでも
619デフォルトの名無しさん
2025/03/15(土) 20:27:24.54ID:BMkcs71n >>617
本を見てくれ
本を見てくれ
620デフォルトの名無しさん
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 と呼ばないものを持ち込んで無理にこじつけてないか?
それは通常 bound と呼ばないものを持ち込んで無理にこじつけてないか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 中国高官と話す外務省局長の表情、やばい [175344491]
- 【高市速報】明日から中国からの輸入が停止すれば2ヵ月で国内の生産業に53兆円の損失発生 [931948549]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 維新の吉村代表「高市総理に中国総領事の国外退去を要請した。今後、知事として中国イベントには出席しない」 [359572271]
- 【悲報】日本人「俺以外の日本人が中国と戦ってくれるぞ!」 [616817505]
