公式
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 part28
https://mevius.5ch.net/test/read.cgi/tech/1742805420/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
探検
Rust part29
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2025/05/03(土) 00:47:30.13ID:phVJ5tWC327デフォルトの名無しさん
2025/05/10(土) 13:30:52.43ID:+8W9QSNf やったことないけど組み込みの世界ではどうなの
Rust使われてる?
Rust使われてる?
328デフォルトの名無しさん
2025/05/10(土) 13:34:10.15ID:gWEfPBXM トヨタはこの前、Rustで求人広告出してたじゃん
329デフォルトの名無しさん
2025/05/10(土) 13:36:27.29ID:zAVOQ4IK 組み込みはRustが多いですね
新規案件は殆どがRust
単品ではmrubyが多いですね
新規案件は殆どがRust
単品ではmrubyが多いですね
330デフォルトの名無しさん
2025/05/10(土) 14:07:29.73ID:tG+fugNq トヨタ系は基本的に愛知勤務だからな
Rustでもなんでも使って求人票を飾らないと厳しいんだろう
Rustでもなんでも使って求人票を飾らないと厳しいんだろう
331デフォルトの名無しさん
2025/05/10(土) 14:11:56.01ID:USkPlt1I Rust使えるなら都落ちして田舎で開発するのも悪くないかも
今はたいていタイプスクリプトばっかだから変化が欲しい
今はたいていタイプスクリプトばっかだから変化が欲しい
332デフォルトの名無しさん
2025/05/10(土) 14:50:39.44ID:tNjV2wjQ TSはフロント側とサーバー側を包括するフレームワークがあるのが強いんだよね
APIを定義してフロント側とバック側を区切る開発なら、バック側はコンパイルされるものが良いというのは同意なんだけど
TSを使うメリットがないと主張してる人は、こういう技術を知らないか、机上論を述べたいだけで実際の開発はしないから生産性など関係ないという人でしょ
APIを定義してフロント側とバック側を区切る開発なら、バック側はコンパイルされるものが良いというのは同意なんだけど
TSを使うメリットがないと主張してる人は、こういう技術を知らないか、机上論を述べたいだけで実際の開発はしないから生産性など関係ないという人でしょ
333デフォルトの名無しさん
2025/05/10(土) 15:01:33.78ID:M/F23qJj334デフォルトの名無しさん
2025/05/10(土) 15:17:51.64ID:TkZSyEZj 今のWeb開発では、独立したバックエンドAPIはオプションだからね
Next.jsでサーバーサイドロジックが存在するのがデフォなので、よほどCPU intensiveな処理でない限りは、
Rustで別途独立したバックエンドを作ることはかえって遅延とコストを増大させる
フロントエンドまでRustエンジニアが自分で面倒見るってんなら好きにすりゃいいけど、
Rustエンジニアがフロントエンドやりたいかねえ
Next.jsでサーバーサイドロジックが存在するのがデフォなので、よほどCPU intensiveな処理でない限りは、
Rustで別途独立したバックエンドを作ることはかえって遅延とコストを増大させる
フロントエンドまでRustエンジニアが自分で面倒見るってんなら好きにすりゃいいけど、
Rustエンジニアがフロントエンドやりたいかねえ
335デフォルトの名無しさん
2025/05/10(土) 15:25:32.84ID:K3qP9/A2 フロントとバックエンドで常に齟齬が無ければいいんだけどと言う話になるとTSが出てくる
336デフォルトの名無しさん
2025/05/10(土) 15:32:42.03ID:M/F23qJj337デフォルトの名無しさん
2025/05/10(土) 15:45:18.30ID:Mv0kFcWv338デフォルトの名無しさん
2025/05/10(土) 15:49:00.61ID:tNjV2wjQ Wasmはサイズがね…
ごく最近のニュースだと、Prismaが実装をRustからTypeScriptに置き換えたのが話題になってたな
デプロイ時のサイズが問題になる分野だから妥当ではあるけど
フロントだとビルド時間の長さが課題になりそう
UIの位置やサイズを微調整したい場合でも、確認のために毎回重ためのビルドが必要になると面倒じゃない?
ごく最近のニュースだと、Prismaが実装をRustからTypeScriptに置き換えたのが話題になってたな
デプロイ時のサイズが問題になる分野だから妥当ではあるけど
フロントだとビルド時間の長さが課題になりそう
UIの位置やサイズを微調整したい場合でも、確認のために毎回重ためのビルドが必要になると面倒じゃない?
339デフォルトの名無しさん
2025/05/10(土) 15:54:13.08ID:Mv0kFcWv >>338
UI 記述言語で書いて形になってから Wasm (にコンパイル可能なプログラミング言語) に変換するような仕組みもある。
UI 記述言語で書いて形になってから Wasm (にコンパイル可能なプログラミング言語) に変換するような仕組みもある。
340デフォルトの名無しさん
2025/05/10(土) 15:57:42.52ID:JFaFsVis341デフォルトの名無しさん
2025/05/10(土) 16:03:27.89ID:M/F23qJj >>339
色んなパターンのうちそのUI記述言語を採用してのSSG/CSRのレンダリングコード共通化が有力の一つだよね
サーバーサイドからJavaScriptを完全排除してパフォーマンスを上げる方向性が正しいので
色んなパターンのうちそのUI記述言語を採用してのSSG/CSRのレンダリングコード共通化が有力の一つだよね
サーバーサイドからJavaScriptを完全排除してパフォーマンスを上げる方向性が正しいので
342デフォルトの名無しさん
2025/05/10(土) 17:37:33.64ID:K3qP9/A2 web開発の現場に言ってRustとwasmの組合せを使いなさいと言っても鼻で笑われるだけ
343デフォルトの名無しさん
2025/05/10(土) 17:57:46.62ID:GFzLbQz1 精神障害児で周りを振り回す無能です。
この業界で俺は死ぬかも。
悲しみ
この業界で俺は死ぬかも。
悲しみ
344デフォルトの名無しさん
2025/05/10(土) 17:58:59.59ID:GFzLbQz1 自慢したりとか怒ると自分の首を絞める。
死ぬ。
俺はプログラミング向いてないが、この業界に行くぞ。
どうも死んだほうが良い人間です。
死ぬ。
俺はプログラミング向いてないが、この業界に行くぞ。
どうも死んだほうが良い人間です。
345デフォルトの名無しさん
2025/05/10(土) 18:01:36.75ID:GFzLbQz1 rustも分からんし三年間学んでプログラム書けない無能です。
質問ある?
質問ある?
346デフォルトの名無しさん
2025/05/10(土) 18:01:51.09ID:GFzLbQz1 もちろんrustも分からん。
347デフォルトの名無しさん
2025/05/10(土) 18:03:05.22ID:K3qP9/A2 rust is must
348デフォルトの名無しさん
2025/05/10(土) 18:03:13.86ID:GFzLbQz1 そもそもこの世の中教えてくれない人が悪いと奥底で思っている無能。
人との縁を切って一人で後悔しがち。
ゴミ人間だよ!
人との縁を切って一人で後悔しがち。
ゴミ人間だよ!
349デフォルトの名無しさん
2025/05/10(土) 18:04:21.67ID:GFzLbQz1 俺はガイジだ…
ガイガイガイジのガガイのガイ。
ガイジのボッチのやる気のある無能。
ゴミカス死んだほうが良い。
ガイガイガイジのガガイのガイ。
ガイジのボッチのやる気のある無能。
ゴミカス死んだほうが良い。
350デフォルトの名無しさん
2025/05/10(土) 18:05:59.49ID:GFzLbQz1 がががーがががががががががががが~が~が~障害児
351デフォルトの名無しさん
2025/05/10(土) 18:06:29.45ID:GFzLbQz1 我はガイジガガガイジ天地入れざる障害児
352デフォルトの名無しさん
2025/05/10(土) 18:11:29.44ID:K3qP9/A2 不勉強で天地入れざると言う言葉を知らなかったが
明治とかの言葉なのかな?
学があるね
明治とかの言葉なのかな?
学があるね
353デフォルトの名無しさん
2025/05/10(土) 18:22:28.75ID:GFzLbQz1354デフォルトの名無しさん
2025/05/10(土) 18:23:33.01ID:K3qP9/A2 どうせ俺以外誰も見ていないから好きなだけ荒らせばいいと思うよ
355デフォルトの名無しさん
2025/05/10(土) 18:23:55.63ID:GFzLbQz1 おちつきました。すみませんでした…
356デフォルトの名無しさん
2025/05/10(土) 18:29:52.94ID:Mv0kFcWv357デフォルトの名無しさん
2025/05/10(土) 18:58:55.45ID:Pq21kD+5 夏休みはまだ早いぞ
358デフォルトの名無しさん
2025/05/10(土) 19:15:47.47ID:K3qP9/A2 業界には何らかの形でメンタルを病んでる人間が50万人以上いると思う
359デフォルトの名無しさん
2025/05/10(土) 19:53:17.55ID:39sc/8ak このスレは特殊だから騙されないように
360デフォルトの名無しさん
2025/05/10(土) 20:19:31.95ID:K3qP9/A2 自分は悪質でなければ荒らしを許容するスレにいた
そこでは荒らしとも楽しく話してそのうち荒らしが真面目なコテになったりしていた
みんなもうどこかに行ってしまったのが残念だけどそれも運命だなと
そこでは荒らしとも楽しく話してそのうち荒らしが真面目なコテになったりしていた
みんなもうどこかに行ってしまったのが残念だけどそれも運命だなと
361デフォルトの名無しさん
2025/05/10(土) 20:45:49.44ID:+8W9QSNf 病院行けよ
俺は今日行ったぞ
俺は今日行ったぞ
362デフォルトの名無しさん
2025/05/10(土) 21:12:29.85ID:RAkiMuTX unsafeなライブラリのラッパーでsafeに設計するのってどうやるの
363デフォルトの名無しさん
2025/05/10(土) 21:22:13.51ID:JK+pyj3t F-22 ada
F-35 C++
F-35 C++
364デフォルトの名無しさん
2025/05/10(土) 21:48:52.45ID:Mv0kFcWv365デフォルトの名無しさん
2025/05/10(土) 21:52:02.98ID:arKsDnK7 >>362
未定義動作の可能性を排除するために必要な条件を全部チェックする
panicとデッドロックはOKらしい(停止すれば許される)
No matter what, Safe Rust can't cause Undefined Behavior.
https://doc.rust-lang.org/nomicon/safe-unsafe-meaning.html
未定義動作の可能性を排除するために必要な条件を全部チェックする
panicとデッドロックはOKらしい(停止すれば許される)
No matter what, Safe Rust can't cause Undefined Behavior.
https://doc.rust-lang.org/nomicon/safe-unsafe-meaning.html
366デフォルトの名無しさん
2025/05/10(土) 22:22:13.21ID:M/F23qJj >>342
そういう低レベルな現場は無視してもいいんだよ
現在もJSのフレームワークは乱立しながら変化進化し続けているように多様性がある
今回の件と関係なくwasmを既に併用しているところも多いからその点もだいじょうぶ
そういう低レベルな現場は無視してもいいんだよ
現在もJSのフレームワークは乱立しながら変化進化し続けているように多様性がある
今回の件と関係なくwasmを既に併用しているところも多いからその点もだいじょうぶ
367デフォルトの名無しさん
2025/05/10(土) 22:48:31.18ID:K3qP9/A2 誰がその多様性とかについていくのか?
お前が低レベルな現場と呼ぶ環境だろう?
お前が低レベルな現場と呼ぶ環境だろう?
368デフォルトの名無しさん
2025/05/10(土) 23:29:16.41ID:tNjV2wjQ フロントにRustを使ってる「高レベル」なプロダクトって何があるの?
バックエンドなら分かるけど
その基準なら世の中のビジネス的に成功してるサービスの殆どが低レベルでしょ
バックエンドなら分かるけど
その基準なら世の中のビジネス的に成功してるサービスの殆どが低レベルでしょ
369デフォルトの名無しさん
2025/05/11(日) 00:02:17.99ID:1LIDIycD370デフォルトの名無しさん
2025/05/11(日) 00:43:43.27ID:qcGHvz/x 子供が使うバリアの高度版
371デフォルトの名無しさん
2025/05/11(日) 00:48:37.35ID:kSJwinQr 内部で使う関数がunsafeである理由を理解して未定義動作の可能性を排除できてないなら
外側の関数にもunsafeをつける約束
外側の関数にもunsafeをつける約束
372デフォルトの名無しさん
2025/05/11(日) 00:49:47.08ID:/xxB2yrb unsafeは「危険」というよりも「コンパイラが安全性をチェックできない」ブロックだと思う
内部的に unsafe を使ってても、ラップした型や関数を外から使う分には安全とみなせるなら問題ない
理想的には
・内部的にunsafeを使っているけど、外から見れば安全 -> unsafe を外して良い
・内部的に unsafe を使っており、かつその関数は利用者が適切にコードを書かないと危険 -> その関数も unsafe とマークするべき
標準ライブラリやきちんとしたライブラリは基本的にこの法則に従ってる
問題はユーザーのコードで、書こうと思えば「問題はあるけど unsafe とマークされてない関数」は作れてしまう
そこは自己責任の問題
けど、セグフォみたいなバグが実際に起きた場合に、直接の原因となるコードは unsafe ブロックの中に絞れる (ことが多い) から、それでもかなりマシだと思う
C++だとコード全体が unsafe ブロックの中にあるようなものなので…
内部的に unsafe を使ってても、ラップした型や関数を外から使う分には安全とみなせるなら問題ない
理想的には
・内部的にunsafeを使っているけど、外から見れば安全 -> unsafe を外して良い
・内部的に unsafe を使っており、かつその関数は利用者が適切にコードを書かないと危険 -> その関数も unsafe とマークするべき
標準ライブラリやきちんとしたライブラリは基本的にこの法則に従ってる
問題はユーザーのコードで、書こうと思えば「問題はあるけど unsafe とマークされてない関数」は作れてしまう
そこは自己責任の問題
けど、セグフォみたいなバグが実際に起きた場合に、直接の原因となるコードは unsafe ブロックの中に絞れる (ことが多い) から、それでもかなりマシだと思う
C++だとコード全体が unsafe ブロックの中にあるようなものなので…
373デフォルトの名無しさん
2025/05/11(日) 00:50:52.82ID:10YJ6Wg3 >>365
Undefinedの有無もなにも標準化されてないからなぁ
Undefinedの有無もなにも標準化されてないからなぁ
374デフォルトの名無しさん
2025/05/11(日) 00:52:29.93ID:qcGHvz/x バリア!バリアしたから大丈夫!
375デフォルトの名無しさん
2025/05/11(日) 01:02:20.84ID:kSJwinQr376デフォルトの名無しさん
2025/05/11(日) 01:18:27.03ID:OAc7wOSx unsafe = Rustコンパイラが安全性を保証してくれない = プログラマが自分の責任で安全性を保証しなければならない = C/C++と同じ状態
逆に言えば、safeつまりunsafeではない、とは、Rustコンパイラが安全性を保証できる状況にしないといけない
未定義動作がないことが根幹にある
だから未定義動作とは何か、どういう時に起きるのか、どうすれば無くせるのか、が最重要
それを完全に理解するまでは、関数内部でunsafeを使って外をsafeな関数、にする判断をしてはいけない
逆に言えば、safeつまりunsafeではない、とは、Rustコンパイラが安全性を保証できる状況にしないといけない
未定義動作がないことが根幹にある
だから未定義動作とは何か、どういう時に起きるのか、どうすれば無くせるのか、が最重要
それを完全に理解するまでは、関数内部でunsafeを使って外をsafeな関数、にする判断をしてはいけない
377デフォルトの名無しさん
2025/05/11(日) 01:20:41.47ID:Vd6Ddgx+ unsafe functionは使いどころが微妙だね
unsafe指定の理由が不明だし基準も開発者次第でまちまち
C#みたいにunsafeにはコンテキストとしての役割しか持たせない方が一貫性がある
呼び出し元に注意させたいんならunsafe_hogeみたいなネーミングルールで十分だった
unsafe指定の理由が不明だし基準も開発者次第でまちまち
C#みたいにunsafeにはコンテキストとしての役割しか持たせない方が一貫性がある
呼び出し元に注意させたいんならunsafe_hogeみたいなネーミングルールで十分だった
378デフォルトの名無しさん
2025/05/11(日) 01:31:46.55ID:kSJwinQr バリアより感染症対策で流行ったゾーニングのイメージだな
感染リスクのあるunsafeゾーンと安全なsafeゾーンがあって
unsafeからsafeに持ち込むときは消毒(検査)が必須みたいな感じ
運用が雑になって事故るのも同じ
感染リスクのあるunsafeゾーンと安全なsafeゾーンがあって
unsafeからsafeに持ち込むときは消毒(検査)が必須みたいな感じ
運用が雑になって事故るのも同じ
379デフォルトの名無しさん
2025/05/11(日) 01:36:40.21ID:/xxB2yrb >>376
> それを完全に理解するまでは、関数内部でunsafeを使って外をsafeな関数、にする判断をしてはいけない
それをやると、一つの関数を unsafe にした時点でそれが呼び出し元に波及して、プログラム全体に unsafe が広がらない?
深刻なバグがコード内のどこで起こってるかを特定したい場面だと、 unsafeは本当に unsafe な操作をしてる箇所に限定されてた方が探しやすいと思う
> それを完全に理解するまでは、関数内部でunsafeを使って外をsafeな関数、にする判断をしてはいけない
それをやると、一つの関数を unsafe にした時点でそれが呼び出し元に波及して、プログラム全体に unsafe が広がらない?
深刻なバグがコード内のどこで起こってるかを特定したい場面だと、 unsafeは本当に unsafe な操作をしてる箇所に限定されてた方が探しやすいと思う
380デフォルトの名無しさん
2025/05/11(日) 01:47:17.60ID:OAc7wOSx381デフォルトの名無しさん
2025/05/11(日) 02:07:37.23ID:OAc7wOSx 「unsafe利用箇所をunsafeブロックで囲えば終わり」は、よくある勘違い
まず一次的には「それを含む関数もunsafe fnにしなければならない」が正解
その上で「内部でunsafeを使ったことで生じる問題が、その関数単独でまたはモジュール全体で閉じ込めることができているかを判断できてから、ようやくunsafe fnをfnにできる」が正解
まず一次的には「それを含む関数もunsafe fnにしなければならない」が正解
その上で「内部でunsafeを使ったことで生じる問題が、その関数単独でまたはモジュール全体で閉じ込めることができているかを判断できてから、ようやくunsafe fnをfnにできる」が正解
382デフォルトの名無しさん
2025/05/11(日) 06:19:57.03ID:Skl5F9WB unsafeな理由をブロック外部で処理すりゃsafeに出来るじゃん
たとえばなraw pointer参照が危険だとして渡す前にスタックまたはヒープ内の正しいアドレスであることを確認して引数を渡すとかの、外部でのチェック(unsafeに至る条件の排除)すれば無毒化できるわけで
そんなんC言語だって変わらんやん。Cで汎用的な関数書いたらほぼほぼポインターだらけになるし、ポインターのチェックせずに使うなんてことは危険すぎてありえんのと一緒やん
C言語にrustコンパイラーのunsafeの枠組みだけ組み込んでsafeじゃなきゃエラーにしますにしたら、コードの5割ぐらいはunsafeになってそうやけどな。標準ライブラリーからしていくらでも危険なアクセスできるし
たとえばなraw pointer参照が危険だとして渡す前にスタックまたはヒープ内の正しいアドレスであることを確認して引数を渡すとかの、外部でのチェック(unsafeに至る条件の排除)すれば無毒化できるわけで
そんなんC言語だって変わらんやん。Cで汎用的な関数書いたらほぼほぼポインターだらけになるし、ポインターのチェックせずに使うなんてことは危険すぎてありえんのと一緒やん
C言語にrustコンパイラーのunsafeの枠組みだけ組み込んでsafeじゃなきゃエラーにしますにしたら、コードの5割ぐらいはunsafeになってそうやけどな。標準ライブラリーからしていくらでも危険なアクセスできるし
383デフォルトの名無しさん
2025/05/11(日) 07:03:44.41ID:Ix0M85KV >>382
Rustでプログラミングしたことない人には理解できないのは仕方ないが的外れ
そのCで手動でチェックをして使うようなことは
Rustではunsafeを使わずとも普通に書くことができて自動的にチェックしてくれて安全かつ楽
むしろRustでunsafeを使う頻出パターンの一つは真逆
その自動チェックを無くすためにunsafeが使われる
例えばあるアルゴリズムで既に自動チェックされて既に安全なものがアルゴリズムの都合で二重に自動チェックされてしまいコンパイルでの最適化でも消えないとする
その2回目の自動チェックを無くすためにunsafeを使う
もしそのアルゴリズムが1つの関数で完了するならばその関数外に影響はないため
関数内部でunsafeを使っていても関数自体は外向けにsafeにすることができる
そのアルゴリズムで2回目の自動チェック省略が常に正しく安全なことはプログラマが安全性を保証することになる
これがunsafeを用いて極限まで速くしつつ安全な関数を生み出すRustの典型的なパターン
Rustでプログラミングしたことない人には理解できないのは仕方ないが的外れ
そのCで手動でチェックをして使うようなことは
Rustではunsafeを使わずとも普通に書くことができて自動的にチェックしてくれて安全かつ楽
むしろRustでunsafeを使う頻出パターンの一つは真逆
その自動チェックを無くすためにunsafeが使われる
例えばあるアルゴリズムで既に自動チェックされて既に安全なものがアルゴリズムの都合で二重に自動チェックされてしまいコンパイルでの最適化でも消えないとする
その2回目の自動チェックを無くすためにunsafeを使う
もしそのアルゴリズムが1つの関数で完了するならばその関数外に影響はないため
関数内部でunsafeを使っていても関数自体は外向けにsafeにすることができる
そのアルゴリズムで2回目の自動チェック省略が常に正しく安全なことはプログラマが安全性を保証することになる
これがunsafeを用いて極限まで速くしつつ安全な関数を生み出すRustの典型的なパターン
384デフォルトの名無しさん
2025/05/11(日) 08:49:42.45ID:tAEYEseM https://doc.rust-lang.org/book/ch20-01-unsafe-rust.html
これが全て
unsafe function に関しては、長文複おじが主張するほどunsafeを含む関数に対して積極的に指定すべきものではなく、
むしろ極力safeとしてラップすることを推奨するトーンで書かれているように感じる
「unsafe functionは呼び出し元に注意させるためのマーク」という解釈は適切であり、常識的に考えて中でunsafe使ってようと呼び方によって未定義動作が生じるような関数はそもそも作るべきではない
これが全て
unsafe function に関しては、長文複おじが主張するほどunsafeを含む関数に対して積極的に指定すべきものではなく、
むしろ極力safeとしてラップすることを推奨するトーンで書かれているように感じる
「unsafe functionは呼び出し元に注意させるためのマーク」という解釈は適切であり、常識的に考えて中でunsafe使ってようと呼び方によって未定義動作が生じるような関数はそもそも作るべきではない
385デフォルトの名無しさん
2025/05/11(日) 09:06:54.66ID:qcGHvz/x unsafe指定の理由が不明って斬新な視点だと思うけどね
他の言語でunsafe使ってるから意味は理解出来る
他の言語でunsafe使ってるから意味は理解出来る
386デフォルトの名無しさん
2025/05/11(日) 09:11:42.89ID:1l4O+k/P387デフォルトの名無しさん
2025/05/11(日) 09:15:33.06ID:qcGHvz/x 変わった人が集まって3行で済んでいた話を広げていく
388デフォルトの名無しさん
2025/05/11(日) 10:06:07.52ID:WmmDZjaJ >>368
無いから自演してまでしてRustを盛り上げようしてる
無いから自演してまでしてRustを盛り上げようしてる
389デフォルトの名無しさん
2025/05/11(日) 10:11:53.93ID:kgU6ATNU ここスレが立って1週間で300レスかよ
さすが究極のプログラミング言語だけあるな
関心持つ人多すぎ
さすが究極のプログラミング言語だけあるな
関心持つ人多すぎ
390デフォルトの名無しさん
2025/05/11(日) 11:15:42.58ID:UTf8BgbA >>369
その理屈だとRustで描かれたコードはすべてunsafeだ
その理屈だとRustで描かれたコードはすべてunsafeだ
391デフォルトの名無しさん
2025/05/11(日) 11:22:17.69ID:u8yQJoO0 >>389
何なんだよこの気持ち悪い複オジのレスはw
何なんだよこの気持ち悪い複オジのレスはw
392デフォルトの名無しさん
2025/05/11(日) 11:30:45.60ID:UTf8BgbA >>383
borrow mut な部分を unsafe {} で囲むとコンパイル通せるんだっけ?
borrow mut な部分を unsafe {} で囲むとコンパイル通せるんだっけ?
393デフォルトの名無しさん
2025/05/11(日) 11:38:18.14ID:B7Jyctor394デフォルトの名無しさん
2025/05/11(日) 11:38:36.95ID:qcGHvz/x unsafeで囲むとその中で危険な必殺技が使える
強力だけどその間はリミッター解除され保護されていない状況にも近い諸刃の剣
それを呼び出す部位もunsafe扱いしたらmainまでunsafeになり危険極まりないw
強力だけどその間はリミッター解除され保護されていない状況にも近い諸刃の剣
それを呼び出す部位もunsafe扱いしたらmainまでunsafeになり危険極まりないw
395デフォルトの名無しさん
2025/05/11(日) 11:48:02.09ID:2w2LR5Qj やってることはC言語でコメントにunsafeって書くのと変わらねえじゃん
396デフォルトの名無しさん
2025/05/11(日) 11:53:03.94ID:qcGHvz/x 違いが判らないなら理解力が不足しているだろう
unsafeだと通常は許されないことが可能になる
unsafeだと通常は許されないことが可能になる
397デフォルトの名無しさん
2025/05/11(日) 12:00:44.68ID:B7Jyctor398デフォルトの名無しさん
2025/05/11(日) 12:19:58.74ID:2w2LR5Qj >>396
俺が言ってる意味がわからない方が理解力が不足してるかもよw
俺が言ってる意味がわからない方が理解力が不足してるかもよw
399デフォルトの名無しさん
2025/05/11(日) 12:37:43.07ID:qcGHvz/x400デフォルトの名無しさん
2025/05/11(日) 12:41:23.78ID:qcGHvz/x 他の言語でもunsafe以外では保護されている部分もunsafeで制約が解除されている
401デフォルトの名無しさん
2025/05/11(日) 13:01:06.68ID:bksu5Opa >>369
unsafeな関数には関数を呼び出す側が守るべきsafetyルールがそれぞれ定義されている
ラッパー関数がそのルールを関数内のみで不変的に守ることが保証できるのならsafe
できないなら上位で保証してもらう必要があるからunsafe
いずれにしてもunsafe関数を呼び出す側が守るべきsafetyルールは
アプリケーションのどこかの段階ではすべて守られることを保証しないといけない
unsafeな関数には関数を呼び出す側が守るべきsafetyルールがそれぞれ定義されている
ラッパー関数がそのルールを関数内のみで不変的に守ることが保証できるのならsafe
できないなら上位で保証してもらう必要があるからunsafe
いずれにしてもunsafe関数を呼び出す側が守るべきsafetyルールは
アプリケーションのどこかの段階ではすべて守られることを保証しないといけない
402デフォルトの名無しさん
2025/05/11(日) 13:53:51.61ID:UTf8BgbA >>396
その理屈だと二重の borrow mut も unsafe{} で許可してもらえるととってもありがたいんだが
その理屈だと二重の borrow mut も unsafe{} で許可してもらえるととってもありがたいんだが
403デフォルトの名無しさん
2025/05/11(日) 14:09:26.63ID:ARIO0JMx404デフォルトの名無しさん
2025/05/11(日) 14:48:00.02ID:0bg/IfOK >>396
unsafeブロック内でも外でもRustのルールは基本的に同じ
何でも出来るようになるわけではない
unsafeブロック内でのみ出来ること
・unsafeな関数やメソッドの呼び出し
・unsafeなトレイトの実装
・生ポインタの逆参照
・共有体フィールドの読み取り
・可変静的変数の読み書き
このたった5つのみが許可される
unsafeブロック内でも外でもRustのルールは基本的に同じ
何でも出来るようになるわけではない
unsafeブロック内でのみ出来ること
・unsafeな関数やメソッドの呼び出し
・unsafeなトレイトの実装
・生ポインタの逆参照
・共有体フィールドの読み取り
・可変静的変数の読み書き
このたった5つのみが許可される
405デフォルトの名無しさん
2025/05/11(日) 16:26:32.64ID:qcGHvz/x 文意を取れない病気なのだろうか?
406デフォルトの名無しさん
2025/05/11(日) 17:38:39.22ID:9sJVUicm まあ病気だろうね
407デルフォトの名無し
2025/05/11(日) 20:01:04.55ID:8gkdAC4l unsafeってそんなに不味いんですね...
408デフォルトの名無しさん
2025/05/11(日) 20:20:01.31ID:LzpU3Ybb 特殊な環境を抜きにすると普通の開発でunsafeが使われることはほとんどない
むしろコンセンサス無くunsafeを使う人がいたら問題児認定されても仕方ない
ボトルネックがあってunsafeを使うことで安全かつ劇的に改善されるなどの共通認識が出来たら注意深くみんなの監視の下で使われる
むしろコンセンサス無くunsafeを使う人がいたら問題児認定されても仕方ない
ボトルネックがあってunsafeを使うことで安全かつ劇的に改善されるなどの共通認識が出来たら注意深くみんなの監視の下で使われる
409デルフォトの名無し
2025/05/11(日) 20:23:01.43ID:8gkdAC4l 特殊な環境って...具体的にどういうのがあるんですかね...
410デフォルトの名無しさん
2025/05/11(日) 21:10:41.96ID:kSJwinQr 安全に使うための条件が分からないunsafeは不味い
標準ライブラリのunsafe関数は大体Safetyで明示してる
標準ライブラリのunsafe関数は大体Safetyで明示してる
411デフォルトの名無しさん
2025/05/11(日) 23:58:19.36ID:UbETPlY9412デフォルトの名無しさん
2025/05/12(月) 11:03:30.61ID:zCv6/zTu OS提供のヘッダーファイルと連携しないといけないからね
rustだってOSのAPIとして使われるようになったら今の形のままでは済まされないはず
rustだってOSのAPIとして使われるようになったら今の形のままでは済まされないはず
413デフォルトの名無しさん
2025/05/12(月) 11:09:27.48ID:pU5GgKWj その頃にはもう人間がAPIを管理することはないだろうから我々が気にする必要はない
414デフォルトの名無しさん
2025/05/12(月) 11:22:05.12ID:0DBz50aj atomicを使える局面なら最速を狙えるが
素人は無難にMutexにしとけ
素人は無難にMutexにしとけ
415デフォルトの名無しさん
2025/05/12(月) 11:51:31.03ID:pU5GgKWj 処理が性能上クリティカルじゃないことが分かってる上で手を抜くのはいいけど、必要に応じてロックフリーを実装できないレベルならさすがに言語の選択から考え直すべき
場合によっちゃゲロ遅スクリプト言語でロックフリーに書かれたコードより遅くなるぞ
場合によっちゃゲロ遅スクリプト言語でロックフリーに書かれたコードより遅くなるぞ
416デフォルトの名無しさん
2025/05/12(月) 11:55:41.87ID:iYjqcrbw 誰もメモリバリアの話なんかしてないだろストローオジ
417デフォルトの名無しさん
2025/05/12(月) 11:57:36.67ID:zCv6/zTu >>415
その通り
その通り
418デフォルトの名無しさん
2025/05/12(月) 12:21:58.09ID:0DBz50aj >>415
ロックフリーにできるならatomicを使う方が当然よい
しかし素人がABA問題からRISCのアクセス順序崩壊まで様々な問題を理解しつつ
compare_exchange系などを正しく使いながら各々のRelaxed/Release/Acquired/SeqCstを最善に選べると思えない
複数のatomicが複雑に絡むとロックフリーはプロでも間違える歴史を繰り返してきた分野だ
さらに言えばatomicよりMutexが有利になるケースの存在も理解して適切に選ぶ必要がある
プロでも単純明快な状況でない場合はまずMutexで実装して後から見極めた上でatomicにするかどうか決める
これらの知識を身に付けるまで素人は無難にMutexにしとけ
ロックフリーにできるならatomicを使う方が当然よい
しかし素人がABA問題からRISCのアクセス順序崩壊まで様々な問題を理解しつつ
compare_exchange系などを正しく使いながら各々のRelaxed/Release/Acquired/SeqCstを最善に選べると思えない
複数のatomicが複雑に絡むとロックフリーはプロでも間違える歴史を繰り返してきた分野だ
さらに言えばatomicよりMutexが有利になるケースの存在も理解して適切に選ぶ必要がある
プロでも単純明快な状況でない場合はまずMutexで実装して後から見極めた上でatomicにするかどうか決める
これらの知識を身に付けるまで素人は無難にMutexにしとけ
419デフォルトの名無しさん
2025/05/12(月) 15:44:13.42ID:zCv6/zTu unsafeについて
https://www.youtube.com/watch?v=lx86iUb2xiI
https://www.youtube.com/watch?v=lx86iUb2xiI
420デフォルトの名無しさん
2025/05/12(月) 22:25:38.81ID:/cK4qYsj https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=18df19416bd6d705356724788636ab13
これをResultのmapとかand_thenとかを使ってスッキリ書く方法ってないでしょうか?
これをResultのmapとかand_thenとかを使ってスッキリ書く方法ってないでしょうか?
421デフォルトの名無しさん
2025/05/13(火) 00:03:38.80ID:tnscGN8Z422デフォルトの名無しさん
2025/05/13(火) 00:12:19.92ID:8MDWNT4X >>421
x=Some(false), y=Some(true)のときz=Some(false)になるからダメじゃね?
x=Some(false), y=Some(true)のときz=Some(false)になるからダメじゃね?
423デフォルトの名無しさん
2025/05/13(火) 00:18:54.30ID:8MDWNT4X すまんOptionとResult勘違いしてた
424デフォルトの名無しさん
2025/05/13(火) 00:29:45.70ID:tnscGN8Z >>422
たし🦀
let z = x.and_then(|b1| y.map(|b2| b1 || b2).or(Ok(b1))).or_else(|_| y.or(Err("ko")));
直したらこんなんなったんだが
matchが一番わかりやすい気がする
たし🦀
let z = x.and_then(|b1| y.map(|b2| b1 || b2).or(Ok(b1))).or_else(|_| y.or(Err("ko")));
直したらこんなんなったんだが
matchが一番わかりやすい気がする
425デフォルトの名無しさん
2025/05/13(火) 00:30:51.37ID:hUpkj0hB x.map(|x| y.map_or(x, |y| x || y)).or(y).or(Err("ko"))とかになるからmatch以上にスッキリ書く方法はないんじゃないかな
426デフォルトの名無しさん
2025/05/13(火) 00:46:34.37ID:8MDWNT4X 一応x,yが増えた時のためにイテレータ使うパターン
let z = [x, y].into_iter().filter_map(Result::ok).reduce(|b1, b2| b1 || b2).ok_or("ko");
2つならmatchでいい気がする
let z = [x, y].into_iter().filter_map(Result::ok).reduce(|b1, b2| b1 || b2).ok_or("ko");
2つならmatchでいい気がする
427デフォルトの名無しさん
2025/05/13(火) 07:26:56.06ID:Ubv8VExT たくさんある時はOk(true)でショートカットしたいケースが多そう
例えば素直に
let mut is_ok = false;
while let Some(x) = iter.next() {
match x {
Ok(true) => return x,
Ok(_) => is_ok = true,
_ => (),
}
}
is_ok.then_some(false).ok_or("ko")
例えば素直に
let mut is_ok = false;
while let Some(x) = iter.next() {
match x {
Ok(true) => return x,
Ok(_) => is_ok = true,
_ => (),
}
}
is_ok.then_some(false).ok_or("ko")
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに ★3 [ニョキニョキ★]
- 日本と中国を結ぶ12航空路線で全便欠航 中国人に最も人気の海外旅行先は日本から韓国に ★2 [ぐれ★]
- 【東京・足立の車暴走】赤信号無視か 危険運転致死傷疑いも視野に捜査 逮捕された職業不詳の男性(37)は精神疾患で通院歴も ★3 [ぐれ★]
- 【音楽】「なんでこんなバカが国のトップなの?」 若者に人気のバンド「GEZAN」のマヒトゥ・ザ・ピーポーが高市総理に苦言 [シャチ★]
- 【芸能】84歳・岩下志麻の最新姿「マジか」「嘘でしょ」「こんな…」「本当に」「恐るべし」「雰囲気が違う」 [湛然★]
- 【芸能】元尼神インター・誠子、来春に京都移住へ「フリーになって自分の幸せを見つけました」芸人活動は継続 [湛然★]
- 【実況】博衣こよりのえちえち朝こよ🧪★2
- 【悲報】小野田紀美さん、宇宙人みたいな服を着てしまう…また、そのことを突っ込まれブチ切れ中www [856698234]
- 【実況】博衣こよりのえちえち朝こよ🧪
- ホロライブ、上場企業なのに故人を悪質ネタにして炎上 [329329848]
- 高市早苗の車のナンバー、中国人に気付かれて炎上wwwwwwwwwwwwwwwwwwwwwww [329329848]
- 🏡
