Rust part27

レス数が1000を超えています。これ以上書き込みはできません。
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/24(月) 01:05:28.53ID:ELaBM+IJ
>>951
実際の使われ方からするとOption型、Choice型だよね。それだとネーミング的に予約語と競合してダメだけどマシな名前は考える余地あったよなあ
基本的に「よその言語から似た単語借りてくる」風習はどの言語にもフレームワークにもあるし慣れるしかないけどね
2025/03/24(月) 02:41:57.49ID:u90IfC4I
plain enumとADT enumがあるだけでenumはenum
ADT enumをenumの名前で使えるのはRustに限った話ではない
954デフォルトの名無しさん
垢版 |
2025/03/24(月) 03:34:48.42ID:rrmbjdIs
HaskellもRustと同じくらい使われてると言われていたが
つまりすべての製品に使われてるようなことを言っていた
955デフォルトの名無しさん
垢版 |
2025/03/24(月) 03:36:56.31ID:rrmbjdIs
結局、駄目なものはどれだけ宣伝しても流行らないのでは?
2025/03/24(月) 07:38:50.09ID:Tm5RncoX
そんなに言われてなかったよ。
それは誤解か、誤解した人が大げさに吹聴してるな
2025/03/24(月) 08:13:34.82ID:a0wY9RFf
>>950
たぶんプログラミング言語一般的な型付けシステムに慣れてないんだと思う
enumはその名の通り列挙型だよ
それを整数型定数と誤認してるのが不思議
定数はその名の通りconstで当然何の型の定数なのかi64とかf64とかOptionなど型名を指定する必要があるよ
enumは列挙型だから名付けてenum Fooなどの別の型になる
内部的には整数で識別されるからその整数値を指定することもできるけどその整数の取れる値の範囲は列挙した分に限られるから別の型
制限はあるけど明示的にcastすれば整数型(i32とかusizeとか)へ変換できるよ

>>952
enumは列挙型だからSome(T)とNoneの2つを列挙できるenum Option<T>型も作れるだけの話だよ
ここでTは任意の型を指定できてジェネリック
もちろんトレイト境界を指定することもできて例えばCowの定義はこうなってるよ
enum Cow<'a, B>
where
  B: 'a + ToOwned + ?Sized,
{
  Borrowed(&'a B),
  Owned(<B as ToOwned>::Owned),
}
958デフォルトの名無しさん
垢版 |
2025/03/24(月) 08:14:23.64ID:CX9jwcEn
Haskellを宣伝してた人がRustを宣伝してる
959デフォルトの名無しさん
垢版 |
2025/03/24(月) 08:15:54.54ID:CX9jwcEn
>>957
Trait制約では?
2025/03/24(月) 08:16:12.40ID:YUJc8XWR
言語なんて一長一短あるんだから万能な言語なんてないんだよね
たまにそのへんのことがわからない人が宗教戦争始めんだよ
2025/03/24(月) 08:24:31.95ID:+3Ali/jO
>>958
これだろうね
2025/03/24(月) 08:28:31.69ID:a0wY9RFf
>>959
トレイト境界(trait bounds)だよ
制約(constraint)とは異なり区別
任意の型(の集合)がトレイトによってトレイト実装されてる型とされてない型に境界が引かれるよ
2025/03/24(月) 08:33:32.13ID:a0wY9RFf
>>960
それぞれの言語に特徴があるね
その中でもRustは様々な優れてる点があるけど

>>950さんの言う通り
>> コンパイルエラーを全部潰したらあとはアプリケーションロジックだけの問題になるのはRustならではで快便感ある。

それが一番大きいかな
他の多くの言語は実行時デバッグで無駄な開発時間を奪われてしまうから
2025/03/24(月) 08:38:14.85ID:+3Ali/jO
>>963
CやC++ぐらいだろ
普通に普及してる言語は大体GCありで考えなくて良い
2025/03/24(月) 08:56:28.14ID:a0wY9RFf
>>964
GCは関係ないよ
プログラミングしたことあるならわかってるはずだけど
まず強い静的型付け言語でないと実行時デバッグは山積み
Rustの場合はデータ競合まで型付けチェックで弾いてくれるからさらに助かるよ
あと一番ありがたいのはsingle writer XOR multiple readers ルール
このおかげで色々な罠にはまらなくて済むよ
それによって書き換え競合を意識するようになるからデータ書き換えのスパゲッティ構造も防げたり
2025/03/24(月) 10:05:01.91ID:NJwebgj2
>>960
「言語」はそれでいいとして「データ」は万能ではないと指摘されたらAIが死ぬんだよな
まだかなあ
2025/03/24(月) 10:15:12.89ID:8nOZWVbe
ポエムで草
2025/03/24(月) 11:58:19.75ID:Q7rhWE6T
>>962
>任意の型(の集合)がトレイトによってトレイト実装されてる型とされてない型に境界が引かれるよ
普通に考えたら無理があり過ぎるってわかるやろ
2025/03/24(月) 12:23:21.76ID:cPeZblFF
>>966
何を言ってるの…?
2025/03/24(月) 12:26:57.19ID:a0wY9RFf
>>968
トレイト境界はそのイメージがちゃんとできると使えるよ
トレイト毎に境界があるからね
971デフォルトの名無しさん
垢版 |
2025/03/24(月) 12:35:54.16ID:tWxitKr9
Arena<T>とかRc<RefCell<T>>ってCの生ポに比べてどれくらいパフォーマンス落ちるの?
972デフォルトの名無しさん
垢版 |
2025/03/24(月) 12:42:11.30ID:tWxitKr9
>>949
何でも必ず初期化させる言語と実際に利用するまで初期化が必要無い言語との差は速度面で差が出る部分だと思う
(安全面はおいといて)
973デフォルトの名無しさん
垢版 |
2025/03/24(月) 13:26:19.03ID:CX9jwcEn
Trait制約とTrait境界
どちらが正しいの?
2025/03/24(月) 14:05:50.97ID:g+HztaOv
>>973
公式といえるものが存在しないので明瞭な結論はないが境界のほうがスタンダードという風潮はある。
真っ先に日本語訳を出したボランティアグループがそうしているから。
技術用語は原則として直訳するものなのでもしも JIS が Rust の規格を成立させたとしてもたぶん境界と訳すと思う。

制約派は有名な会社 (オライリー) が出している書籍で制約という語をあてていることを根拠としていて、ボランティアグループよりプロの翻訳家のほうが信頼できると主張している。
2025/03/24(月) 14:07:50.39ID:GUfk5wC7
ボウンズでいいよ
2025/03/24(月) 14:32:08.72ID:jgU8FjIN
>>973
訳さずトレイトバウンドと呼ぶのが好ましいけど日本語化したければトレイト制約
トレイト境界は勘違いと理解不足から発生した間違った訳語なので避けたほうが良い

どの辺が間違っているかはこのスレを読み返してくれ
2025/03/24(月) 14:34:35.04ID:8nOZWVbe
屋根の色は青が正しい!
2025/03/24(月) 15:34:03.20ID:MH5MWyKr
>>977
誤爆してるよ
お大事に
2025/03/24(月) 17:17:17.01ID:a0wY9RFf
>>971
生ポと比較する意味がないよ
確実に自動解放するための枠組み
例えばRcは複数の所有者が生じる時に使われて、どれが先に消えても最後に残った側が自動解放するんだよ
Cで同じことを実現しようとしたら同じく参照カウンタが必要
C++でも参照カウンタを用いてshared_ptrが作られてるよ

>>972
初期化を仮定しないMaybeUninitがRustにはあるから大丈夫
ライブラリ等ではこれを使って不要な初期化を避けているよ
0でのmemset呼び出しが消滅

973
trait boundsはトレイト境界だよ
英語でも敢えてconstraint (制約)を使っていない意義を尊重
トレイト境界により型のとれうる範囲が狭まって型の制限いわゆる型制約が生じるよ
2025/03/24(月) 17:28:07.52ID:NJwebgj2
ああこれって王様を尊重すると言いながら
戦争していいかどうかは王様に相談してないパターンか
2025/03/24(月) 18:08:22.30ID:XCWZ1fyV
「制約」は渡す側の視点でしか見てないからな
受け取る側にとってはトレイトの「保証」でもある
ジェネリクス型を受け取る関数を自分で書かないレベルに合わせるなら
「制約」で意訳しても構わないと思う
2025/03/24(月) 18:38:13.55ID:g+HztaOv
>>981
そのレベルの人が上達してきたときに用語を切り替えるなんてわけにもいかんし、
「この制約のことを Rust 用語ではトレイト境界といいます」とでも一言あればそれで済む話じゃね?

入門者向けの便宜的な説明が後々まで尾を引いて混乱することはあるから喩えとか意訳とかは慎重にしたほうが良いと思う。
2025/03/24(月) 18:44:54.15ID:zTw2TQbc
>>981
レベルの話じゃないんだよね

両方の視点をもつのはいいんだけど型シグニチャは使う方との契約だから
作る側じゃなく使う側の視点によせるのが自然
作る側の視点で見る回数よりも
使う側の視点で見る回数のほうが圧倒的に多いということもある

仮に受け取る側の視点から見たとしても
トレイトの「保証」だから「トレイト境界」とはならないよね

not satisfiedとかとコロケーションが確立されてるのも
rustcの開発陣もみんな制約として見てるからなんだよ
2025/03/24(月) 18:49:17.73ID:zTw2TQbc
プレート境界とか軍事境界とか〜境界の日本語での使われ方を考えてみたら?

プレートとプレートの境目だからプレート境界
西側の軍事と東側の軍事の境目だから軍事境界

トレイトとトレイトの境目ならトレイト境界は日本語として用意に成立する
でも実際はそうじゃないから
2025/03/24(月) 18:54:56.12ID:a0wY9RFf
『制約』という完全に意味を間違えている言葉でなければ
『境界』より相応しい範囲を表す何らかの言葉でもいいと思うよ
混乱しないようにトレイト境界のままでもOK
2025/03/24(月) 18:59:58.08ID:a0wY9RFf
boundsの意味もtrait boundsの用法も範囲の限界を意味しているわけだから
範囲の限界はすなわち境界だよね
範囲の限界を表すもっと良い言葉があるかどうか
987デフォルトの名無しさん
垢版 |
2025/03/24(月) 19:09:34.08ID:CX9jwcEn
Boundsが制約だと思うスレ
2025/03/24(月) 19:28:44.61ID:38sVBjRv
まだやっていたのかw

これが本当の境界○能だったらどうしよう
2025/03/24(月) 20:22:18.74ID:w43kWBw9
「よ」とか「ね」とかの終助詞付けても主張が激しいから全然柔らかくなってない
特有の違和感を常に感じさせる文体
990デフォルトの名無しさん
垢版 |
2025/03/24(月) 21:58:28.76ID:CX9jwcEn
>>984
プレートの際だからプレート制約
軍事の際だから軍事制約では?
991デフォルトの名無しさん
垢版 |
2025/03/24(月) 21:59:18.18ID:CX9jwcEn
>>988
制約知能でも意味が通じる不思議
2025/03/24(月) 22:12:24.41ID:617amb99
>>986
>範囲の限界を意味しているわけだから
何の範囲の限界?
そこも含めて考えないと質の低い機械翻訳と同じだよ

>範囲の限界はすなわち境界だよね
違う
日本語における限界と境界の違いを理解してない
2025/03/24(月) 22:17:47.15ID:g+HztaOv
日本語での意味なんかどうでもいいよ。
Rust コミュニティの先導者が境界ということにしたのだし、コミュニティの状況を調べなかったか分断しようとするオライリーの質が低いってだけ。
2025/03/24(月) 22:40:56.78ID:wvKmLjta
レイトマジョリティ自覚して先人に敬意払っとけ
2025/03/24(月) 22:43:00.79ID:vQzFTF6N
ID:a0wY9RFfは所有権を複製しそうだね
2025/03/25(火) 04:40:05.04ID:ztarSHRB
残り3レスで問題と慈善事業をを要約してくれ
2025/03/25(火) 07:36:07.50ID:4wgArwVx
日本語訳プロジェクトを乗っ取って「トレイト制約」で統一すりゃいいんじゃないんかな。
日本語訳プロジェクトは最新版に追随できていないから文句言うやつは居ないだろ。
2025/03/25(火) 07:40:07.85ID:6deS3uMO
そういや、誰か標準ライブラリの日本語訳してなかったっけ?
あれどうなった?
999デフォルトの名無しさん
垢版 |
2025/03/25(火) 08:50:43.64ID:ztarSHRB
トレイトの神様 降臨
2025/03/25(火) 08:51:04.90ID:ztarSHRB
継ぎ
https://mevius.5ch.net/test/read.cgi/tech/1742805420/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 112日 10時間 18分 15秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。

▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/

▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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