Rust part28

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2025/03/24(月) 17:37:00.15ID:NJwebgj2
公式
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 part27
https://mevius.5ch.net/test/read.cgi/tech/1733146370/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
278デフォルトの名無しさん
垢版 |
2025/04/04(金) 14:23:46.45ID:8rdTlYhI
>>277
そうなんだけど
なぜか知らんけど
クラスとオブジェクトは同じみたいなことを言い出す輩が居てややこしい
2025/04/04(金) 14:43:55.26ID:eR4DolQd
>>277
これブックマークしとけばええんかの
280デフォルトの名無しさん
垢版 |
2025/04/04(金) 15:06:26.98ID:8rdTlYhI
RustやるにもC++から始めたほうが良いんじゃないかな
なぜそうなってるのか理解が進むと思う
2025/04/04(金) 15:10:43.72ID:eR4DolQd
CやらないとC++分からないからCからオススメ
2025/04/04(金) 16:14:54.75ID:yJNeJM2G
>>277
“Bounds are constraints on a type or trait.”のbe動詞も、
「AはBである」と訳すものではなく、
「AはBになる(Bの特性を持つ)」で、どっちかといえばhasに近い意味合いになるんだよなぁって思ってる。
2025/04/04(金) 19:30:24.62ID:SRZxkDOr
まだトイレ制限やってんのか
2025/04/04(金) 22:39:40.99ID:optItjd0
>>270
トレイトオブジェクトで自動トレイト以外のトレイト境界を複数用いる場合は合成になるね
いわゆるメソッド無し「{}」宣言

// トレイト境界の合成
trait TraitAB: TraitA + TraitB {}

// 合成トレイト境界の実装 (使う型の分)
impl TraitAB for T1 {}
impl TraitAB for T2 {}

// あとは同じ
let x: &dyn TraitAB = &t1;
// または
let y: Box<dyn TraitAB> = Box::new(t2);
2025/04/04(金) 22:42:52.75ID:mQ0/kONA
トイレット境界は難しいよ。いつもスリッパ履き替えるの忘れる
2025/04/04(金) 22:52:47.44ID:saOSS87s
複オジの苦し紛れのクソみたいな言い訳自演も秒で否決されてて草
さすがにみんな複オジ耐性を身につけたか
2025/04/04(金) 23:41:57.03ID:XamlPiqQ
>>284
トレイト境界は制約ではなく使う機能の列挙という理解でいいんだよな
2025/04/04(金) 23:56:38.69ID:Y4yVUbBr
>>282
バカすぎだろw
そんな意味になるわけないじゃん
中学生でも絶対やらない間違いだぞ
2025/04/05(土) 00:41:02.94ID:fzOXtcwa
子供扱いさせてから、大人も子供もどっちもどっちだと洗脳するんだよ
そうやって、自分は大人と同じだと思ってる子供を量産する
2025/04/05(土) 01:02:47.81ID:VKg4cIYU
>>288
>中学生でも絶対やらない間違いだぞ
大の大人が中学生でも絶対やらない間違いをするから「境界」などというトンデモ訳が出てくるわけで
2025/04/05(土) 01:15:11.42ID:a8YBrxtn
>>282
そんなバカげた見方をしなくても英語でも日本語でも同じで修飾語がある時にそれ省けば同等を意味しない
例えば
「彼はわたしにとって味方である」
「彼はあなたにとって敵である」
これは両立しえて対象を抜きに彼自体は味方でも敵でもない

「boundsは型に対する制約である」
これもbounds自体は制約でも何でもない
あくまでも型に対しては制約となるだけだ
それを理解できない人がbounds自体を制約と訳してしまうと、
他の至る所で日本語訳が破綻してしまう例が既にいくつも挙げられている通りだ
2025/04/05(土) 02:11:02.04ID:sg9Ur0Fb
>>284
論理和"+"はベン図で言えばorだけどその複数のトレイトが適用される条件はandだからやっぱり境界じゃないな

traitA * traitBならandだったのに残念
2025/04/05(土) 04:31:02.03ID:UUup59E1
>>292
トレイト境界は必要となる機能を足していくイメージで使うから+がしっくり来るよ
2025/04/05(土) 09:21:38.69ID:7yyM+PYz
+はor
*はand

これが基本

traitA * traitB は traitAが実装されている=1 traitBが実装されている=1 と言う時だけ 1(true)
だからこれが正しい

トレイト境界だと表現が矛盾している
+だと traitAもしくはtraitBでtrueなのでやはりベン図的な境界ではありえない
2025/04/05(土) 09:25:04.62ID:7yyM+PYz
トレイト制約なら+がしっくりくる
条件がtraitAに加えてtraitBとなるので常識的だと思う
2025/04/05(土) 09:31:25.64ID:UUup59E1
>>295
実際にプログラミングすればわかるけど
必要となる機能を加えていくんだよ
制約なんて視点で考えないよ
2025/04/05(土) 09:33:43.02ID:7yyM+PYz
トレイト境界なんて変な言葉使ってるけど実際は集合論的な境界とはかけ離れている
2025/04/05(土) 09:37:39.22ID:UUup59E1
型パラメータTを使う場合でも同じ
例えば型Tをデバッグ表示したくなったら
T: Trait1+ Trait2 既存のここへ
デバッグ機能も使えるように足す
T: Trait1+ Trait2 + Debug
制約なんて発想はどこにもないよ
2025/04/05(土) 09:59:12.29ID:7yyM+PYz
trait境界がベン図的であると言うのはただの勘違いである
2025/04/05(土) 10:05:02.72ID:7yyM+PYz
A or Bはtypsscriptのユニオン型でそっちは |でつなげている
2025/04/05(土) 11:05:30.39ID:FmPOHx1d
「境界」と書かれてる本は読むに値しない
という事だけはよくわかった
2025/04/05(土) 11:17:04.10ID:in25MGhG
可能なら英語の原文を読む方がいいのは間違いない
bound⇔制約みたいな謎対訳を意識しなくて済む
洋書は高いけどね
2025/04/05(土) 11:17:57.15ID:r2N1m9n9
>>301
わかりやすいリトマス試験紙だよね
2025/04/05(土) 11:19:18.81ID:/EY1L6NJ
>>301
境界はどうでもいいが
trait boundsの日本語訳をトレイト制約としてしまうとRust公式リファレンスのあちこちで困ったことになることが今回のこのスレでの調査で判明した
少なくともトレイト制約と訳してはいけないことが明白になった
2025/04/05(土) 11:58:20.02ID:fzOXtcwa
たとえばcobolをjavaに直訳できない問題って

新しい要素を追加した方に原因があるのか?
306デフォルトの名無しさん
垢版 |
2025/04/05(土) 13:46:49.67ID:Ur9Vw4Z1
>>291
ほんそれ

>>292
and にしたいなら TraitA & TraitB だろ常考
&'a TraitB と区別付かなくなるから避けたとかいうのは無しな
2025/04/05(土) 13:48:18.46ID:Ur9Vw4Z1
>>294 == >>292
id変えて御苦労さん
2025/04/05(土) 14:22:39.14ID:fzOXtcwa
>>291
子供医者は一部の患者にとっては敵である??

馬鹿みたいな思想だないつも
2025/04/05(土) 14:29:32.69ID:7yyM+PYz
>>307
日付変わったらid変わるんだよ…馬鹿なのかなあ?
2025/04/05(土) 14:30:52.53ID:7yyM+PYz
と思ったけど同じ日だな
5chがおかしいんだろ
2025/04/05(土) 21:54:28.18ID:kbjS/M49
>>302
洋書のほうが断然安いだろ
2025/04/05(土) 22:12:55.39ID:+mdv7JT9
ものによるよ
具体的に比較せねば
2025/04/05(土) 22:23:17.94ID:JwBnCnrW
日本で洋書を買うなら輸入品だもの。
円安の情勢で高くなるのは仕方ないよ。
314デフォルトの名無しさん
垢版 |
2025/04/05(土) 22:38:25.51ID:gU7LWJwv
TraitやTrait boundsが制約だと思ったんだろな
特性や特性の範囲を示しているだけで
必ずしも制限に使われると限らないのだが
2025/04/05(土) 22:41:49.78ID:+mdv7JT9
オライリーならサブスクで洋書PDF読み放題があったような
316デフォルトの名無しさん
垢版 |
2025/04/05(土) 22:54:56.00ID:UT8OnkGd
Lifetime boundは?
2025/04/05(土) 23:36:18.07ID:yh9xzdzz
>>284
>>let x: &dyn TraitAB = &t1;

その合成したトレイト境界によるトレイトオブジェクトを、
一昨日リリースのRust 1.86からこのようにスーパートレイトへアップキャストできるようになったという理解でいいんだよな。
let xa: &dyn TraitA = x;
let xb: &dyn TraitB = x;

結局この+によるトレイト境界の合成も、制約したと考えるより、両方の特性(機能)を持たせたと考える方が理に適ってるよな

>>// トレイト境界の合成
>>trait TraitAB: TraitA + TraitB {}
2025/04/06(日) 01:02:23.74ID:upKL4j/Q
境界の合成ならorでしょう?なんでandになるんだよ
2025/04/06(日) 01:05:52.29ID:1+4HzuoN
その特性を持つか持たないか
両方の特性を持つようになるから'+'がふさわしい
2025/04/06(日) 01:12:53.80ID:upKL4j/Q
質問
トレイト境界と言う言葉があまりしっくりきません

chapGPTの答え

「トレイト境界(trait bound)」っていう言葉、ちょっとピンとこないというのは自然な感覚です。
むしろ「型に課す条件」とか「型パラメータの制約」というようなイメージの方が、Rustの使い方としてもしっくりくるかもしれませんね。


「trait bound」という言葉は英語の「bound(拘束、制約、限界)」の訳で、おそらく「型に制約を課す」という意味から来ています。
ただ、日本語で「境界」というと、物理的な境目やある範囲をイメージしやすく、それが逆にわかりづらくしているかもしれません。

しっくりくる言い換え候補いくつか
表現 ニュアンス

トレイト条件 Tに必要な条件、論理的に「T ∈ Debugを満たす型の集合」

トレイト制約 Tにかかる制限。構文的にも意味的にも合ってる

トレイト必須要件 必須で満たさなければならない要件

実装条件 implが意味する「Tは〜を実装していないといけない」

実装制限 実装可能な範囲を制限する
2025/04/06(日) 01:15:32.61ID:upKL4j/Q
トレイト境界は誤訳で言いたいならトレイトバウンドでいい
これがFA
2025/04/06(日) 01:23:12.69ID:upKL4j/Q
欧米でのboundと日本の境界は必ずしも同じ意味ではない
そもそもの単語の概念が違う

boundの制約部分の意味合いを翻訳者が取れずにboundの一番目に来る訳語の境界を当ててしまった
これが結論
2025/04/06(日) 02:18:12.24ID:n88cNHgB
うっかりミスをしただけなら喧嘩にはならんがな
原作を改変することは許されない的なルールを守る意志があるだろ
2025/04/06(日) 03:03:56.95ID:6x/xr+p4
安いな
https://www.rustinaction.com
https://www.manning.com/books/rust-in-action
高いな
https://www.ama損.co.jp/dp/1617294551
輸入だとしてもなんでこんな値段になるんだ
2025/04/06(日) 08:58:25.67ID:2WEREMbe
つまらん言い争いする前にとっとと Rust Book最新版翻訳して、好きな方の用語に統一しとけ。

最新版の翻訳も無いのに日本語和訳とかゴミみたいな話しても無駄だろ。
2025/04/06(日) 14:12:55.00ID:n88cNHgB
無駄は利益でも損失でもない
つまり有益でも有害でもない
2025/04/06(日) 14:48:28.98ID:MSyTNjpB
ゴミ翻訳が何万人ものユーザーに悪影響を与えてるんだから単なる無駄どころかガチ害悪
2025/04/06(日) 18:52:05.55ID:n88cNHgB
でも、あなたの影響は0だった
2025/04/06(日) 21:35:24.97ID:POwi82Q3
>>320
すげーまともだな
330デフォルトの名無しさん
垢版 |
2025/04/07(月) 17:37:54.88ID:Hr3jPqkP
Trait制約では意味が全く違う
2025/04/07(月) 17:41:13.06ID:Ww5VQZEx
Javaのインターフェイス程度の代物にそんあ小難しい概念いらんけどな
2025/04/07(月) 17:42:09.21ID:SejWwHdL
「トレイト制約」が正しい!
2025/04/07(月) 18:06:19.68ID:tzb+Pi1x
Trait boundsが正解
無理に日本語にすんな
2025/04/07(月) 18:31:33.33ID:H5zq3RB8
>>330
どう意味が違うの?
2025/04/07(月) 22:20:40.10ID:dUVt/NLM
ジェネリクスは小難しいから普及が遅かった
Javaのインターフェースはそれ自体はジェネリクス普及前からあった
Javaのインターフェースはそれ自体はジェネリクス引数の制約ではない

ここで重要なのは、主語を変えても同じことが言えるなどといった保証はないってことだ
2025/04/07(月) 23:52:56.67ID:RGwsG0mw
ジェネリクスはAda発祥やで
2025/04/08(火) 00:14:35.10ID:2Ld3Figm
CLUやろ
2025/04/08(火) 10:44:56.88ID:fi2+odQD
Java界隈も「境界」という訳の異常性に気付いて徐々に避けるようになってる
339デフォルトの名無しさん
垢版 |
2025/04/08(火) 14:07:35.74ID:hfo/+BmV
制約とか言ってる低能
2025/04/08(火) 14:17:58.70ID:TmSh0jTk
traitも日本語訳すべきだろ
大陸中国語では「特質」と訳してるらしい
ただし漢字は簡体字で
2025/04/08(火) 14:31:57.06ID:dbg0dckm
特質系とか漫画の読みすぎかよ
漫画の語彙を訳に使うのあるかもしれん
無量空所
2025/04/08(火) 15:12:55.89ID:shzc/EQE
boundが”trait bounds”のような名詞のでしか出てこないのであれば”トレイトバウンド”で十分なんだが動詞としてもその過去分詞が形容詞としても使われるから意味の通じる日本語にする必要はあるだろうな
2025/04/08(火) 15:13:35.03ID:BOqdaM8X
君らの議論見てると日本語と英語の意味が完全には一致してないからもめてるんだろ
適切な言葉が日本語にないのなら原語そのまま使えよ
どうしても日本語にしたけりゃ新語つくっちゃえよ、トレイト制界とかトレイト境約とか
2025/04/08(火) 15:25:59.18ID:bT7tyFQB
完全には一致してないではなくて
境界は完全に間違ってるからな
2025/04/08(火) 15:32:05.13ID:dbg0dckm
ワッチョイつけようぜ
2025/04/08(火) 15:32:48.21ID:y+3ouVjs
10人中8〜9人がおおよその意味を想像できるような新語ならともかく想像できないような新語なら訳さないほうがよっぽどマシ
2025/04/08(火) 15:37:41.98ID:0DGOjuLN
トレイト境界(trait bounds)のboundsは境界・領域・範囲などどれでもいいんだけど、
境界はもちろん二次的な意味の二者間の意味ではなく単独の意味の方で、
どうしても二者間に固執したい人なら内と外の二者間の境界と考えて。
2025/04/08(火) 15:47:16.64ID:Spaoq+uw
なんでもいいというのが一番困る、という寓話があるが、その寓話には名前がない
2025/04/08(火) 15:59:24.30ID:v0gybFAh
題名も何でもいいからか
2025/04/08(火) 16:48:31.19ID:zjl9w56y
道?
2025/04/08(火) 17:08:27.56ID:lq55yQzg
トレイト執着
2025/04/08(火) 17:19:56.75ID:dbg0dckm
粘着やな
2025/04/08(火) 17:56:08.61ID:2okZDSQp
>>254-257
現象的にメンバの方のdropが先に呼ばれて
最後に自分のdropが呼ばれているようなのですが
これって仕様?
2025/04/08(火) 20:49:57.66ID:0DGOjuLN
>>353
Drop::drop()が呼ばれるのは親が先で子が後になるけど、
実際のptr::drop_in_place()が自動で呼ばれるのはもちろん子の処理を終えた後に親が後になる。
そのため安全に全自動で任せつつ、子の処理の前に親がやっておきたいdrop以外の前処理だけを親のDrop::drop()に書くことができる。
複数の子どもの処理の順序や自動の有無も含めて制御したい時はManuallyDropをつかう。
2025/04/08(火) 21:53:23.33ID:Spaoq+uw
The impl Trait syntax ... is actually syntax sugar for a longer form known as a trait bound

構文糖じゃない方のトレイト
実際のトレイト
356デフォルトの名無しさん
垢版 |
2025/04/09(水) 12:19:06.96ID:KZk4pTLo
トレイト制約などといってる輩は全く理解できていないと自白してるようなもの
2025/04/09(水) 15:01:13.51ID:SwtFlD5e
糖質境界
2025/04/09(水) 18:04:17.50ID:3/XtwXUj
もうちょっと正義感が強かったら
べつにカジノ経営者が自白しなくても、カジノは特殊詐欺とほぼ同じというのは確定事項として扱えるようになる
2025/04/09(水) 18:54:36.47ID:NcLuCgfe
三店制約
2025/04/09(水) 18:55:51.86ID:PAP9iIr7
パチ屋
2025/04/09(水) 19:16:50.12ID:8s5+aT/q
インターフェース統一協会
2025/04/09(水) 19:33:46.61ID:a0uoZNgJ
言語仕様らしきものに忠誠心を示すのはわかるけど
誤訳された用語にすら全面的に支持して従うってどういうことなの?
2025/04/09(水) 19:34:49.38ID:PAP9iIr7
開発してない人なんでしょう
評論家
2025/04/09(水) 19:44:27.38ID:eKbqXV9X
仮に誤訳だとしても理解を妨げるほど害悪あるほどじゃない
通じれば用は足りてる
他分野でもそんなのはいくらでもある
ひっくり返さないと気がすまないのは幼稚なだけ
2025/04/09(水) 19:59:28.62ID:a0uoZNgJ
拘るほうが幼稚

普及を目指すなら誰にでも理解しやすい用語を選ぶのが唯一の正義
2025/04/09(水) 20:09:07.64ID:PAP9iIr7
普及目指してないよ
分かるやつだけ使え
一般人はPHPでも使っとき
2025/04/09(水) 20:15:02.42ID:a0uoZNgJ
前はトレイト境界やライフタイム境界でググったらもしかしてトレイト協会とかもしかしてライフタイム協会って出てた
368デフォルトの名無しさん
垢版 |
2025/04/09(水) 20:29:27.44ID:KZk4pTLo
>>364
Trait境界は正確な訳と言って良いと思います
369デフォルトの名無しさん
垢版 |
2025/04/09(水) 20:33:30.34ID:KZk4pTLo
Trait制約は、引数を関数というような感じですね
全く意味が違います
2025/04/09(水) 20:35:28.68ID:PAP9iIr7
どうでもいいーー
2025/04/09(水) 20:41:17.16ID:KXz/CDBQ
Rustが嫌いだってblogがバズってるらしい
たぶん訳語がおかしいせいだろうな
しらんけど
2025/04/09(水) 20:43:27.68ID:PAP9iIr7
あれはCやったことないからRustの恩恵がわからないちゃんだろ
GC言語だけ使っておけ案件
2025/04/09(水) 21:32:51.79ID:a0uoZNgJ
GC言語でいい人はRust使うメリットはないからな
2025/04/09(水) 21:42:42.42ID:OL648qCg
>>371
見たけどあまりに初心者で慣れてなくて知らなかった話が話が大半だった
結局どの言語でも同じで慣れたら何ら問題ない話ばかりだった

コンパイルが多少遅いのは仕方ないが
初心者コピペで以下の状況だったのが笑えた

>>[profile.release]
>>lto = true
>>codegen-units = 1
>>opt-level = 3
>>panic = "abort"
>>strip = true

>この設定ですが意味を理解して書かれてます?
>LTOはリンク時最適化なので有効にすればビルドは遅くなります。
>codegen-units は最大何並列でコード生成するかなので1にすれば当然ビルドは遅くなります。
2025/04/09(水) 21:45:24.08ID:a0uoZNgJ
初心者相手に俺つえーしてる時点でカッコ悪いとしか…
みじめなのはどっちなんだろう
2025/04/09(水) 21:49:28.76ID:OL648qCg
>>373
GCの有無なんて慣れの問題
慣れれば設計やコーティングで躓くような部分ではない
無理なことはGC言語で書かれたものを再設計することなく移植しようとすることくらいだ
2025/04/09(水) 21:54:31.24ID:EdteNgmQ
人によるから分からんぞ。PHPのスレ行って聞いてきな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。