Rust part22

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2024/01/20(土) 23:21:40.08ID:wyzQTwgG
公式
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 part21
https://mevius.5ch.net/test/read.cgi/tech/1692105879/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.2ch.net/test/read.cgi/tech/1514107621/
2024/01/20(土) 23:30:24.59ID:YXP1l1jf
Rust The Book (日本語版)
https://doc.rust-jp.rs/book-ja/
Rust edition guide (日本語版)
https://doc.rust-jp.rs/edition-guide/
Rust by example (日本語版)
https://doc.rust-jp.rs/rust-by-example-ja/
Rust cookbook (日本語版)
https://uma0317.github.io/rust-cookbook-ja/
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
Rust nomicon book (日本語版)
https://doc.rust-jp.rs/rust-nomicon-ja/
Rust async book (日本語版)
https://async-book-ja.netlify.app/
Rust WASM book (日本語版)
https://moshg.github.io/rustwasm-book-ja/
Rust embeded book (日本語版)
https://tomoyuki-nakabayashi.github.io/book/
Rust enbeded discovery (日本語版)
https://tomoyuki-nakabayashi.github.io/discovery/
Rust Design Patterns (日本語版)
https://qiita.com/Yappii_111/items/4ccc3a8461cdd4035651
https://qiita.com/Yappii_111/items/654717e6a6a980722189
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
2024/01/20(土) 23:30:59.71ID:YXP1l1jf
Rust Reference Book
https://doc.rust-lang.org/reference/
Rust Standard Library
https://doc.rust-lang.org/std/
Rust rustc Book
https://doc.rust-lang.org/rustc/
Rust rustdoc Book
https://doc.rust-lang.org/rustdoc/
Rust rustup Book
https://rust-lang.github.io/rustup/
Rust Cargo Book
https://doc.rust-lang.org/cargo/
Rust unstable Book
https://doc.rust-lang.org/nightly/unstable-book/
Rust macro Book
https://danielkeep.github.io/tlborm/book/
Rust CLI (Command Line Interface) apps Book
https://rust-cli.github.io/book/
Rust Future Book
https://cfsamson.github.io/books-futures-explained/
Rust async-std Book
https://book.async.rs/
Rust tokio Book
https://tokio.rs/tokio/tutorial
Rust serde Book
https://serde.rs/
2024/01/21(日) 19:52:38.28ID:/dcZ0aWP
Rustを理解していく順序 (文法以外)
ownership 

lifetime (これ以前でも参照を持ち越さない範囲で可)

trait (これ以前でもライブラリ既存traitメソッド使用は可)
generic (これ以前でもライブラリ既存genericメソッド使用は可)

macro (これ以前でも既存macro使用は可)
async (これ以前でも同期で使用可)

unsafe (ほとんどのことはunsafeを使わずに可能)

もしunsafeを使わないと効率よく実装できない安全なパターンを見つけて、
かつ、それが既存ライブラリに存在しない新たなパターンならば、
それは大発見だから皆のためにそのcrateを公開すべし
2024/01/21(日) 20:27:09.29ID:D3jVm/Ct
今、refと&で混乱してるとこ!
6デフォルトの名無しさん
垢版 |
2024/01/21(日) 20:58:34.51ID:RjmgKxew
オーナーシップとかAIにやらせればOK
意識して時間割く必要なし
2024/01/21(日) 21:23:48.87ID:/dcZ0aWP
>>5
パターンマッチングはCopy実装型はcopyされてそれ以外はmoveされる

copyやmoveを避けるには
マッチング対象を参照にすれば
全て参照として受け取れる

しかしある部分はcopyである部分は参照で受け取りたいことがよくある
(例えば数値とStringで構成されてる場合)
その時は参照で受け取りたい部分のみrefを付けるとそこは参照で受け取れる
8デフォルトの名無しさん
垢版 |
2024/01/21(日) 21:33:08.24ID:LhOQKlqN
>>5
refはbind by reference
左辺(相当)でのみ使う(binding生成時のみ)
右辺で&を使うのと同じだけど右辺で&を指定できない場面で使う

&を左辺で使うとパターンマッチでデリファレンス
右辺で*を使うのと基本同じ
2024/01/21(日) 22:36:05.82ID:/n8yifEU
>>https://mevius.5ch.net/test/read.cgi/tech/1692105879/990
一応知らない人のために書いておくけど

「Rustがunsafeコード一切なしでメモリアンセーフ」な事が判明してから半年近く経ってる
特定の機能導入のタイミングでコードが発見されたけど、
「Rustの仕様バグ」だと認識されていて直せない

>>4
そんな事並べて理解したつもりでも、分からないと言っている人の側の主張が正当なんだよ

最近はここでも保証って言われなくなっただろ、当たり前だよRustの仕様に健全性が無いのだから
たぶん知っていて話を逸らしているのか、過去スレでスルーしたかで、この指摘も無理やり矮小化してくるからな
(githubの議論でも矮小化して放置)
気を付けろよ

https://github.com/rust-lang/rust/issues/114936
2024/01/21(日) 22:51:42.90ID:w4jDa8WO
>>9
無意味な揚げ足取りをしてRustを叩きたい人はアンチスレへ
棲み分けしてください

Rustアンチスレ
https://mevius.5ch.net/test/read.cgi/tech/1509028624/
2024/01/22(月) 00:47:14.54ID:jqH5vdYX
仕様バグだから直せないじゃなくて
厳密なチェックをする実装は0から作ったほうが早いから
今使ってる確率的(笑)な実装は変更しないんだよね?
12デフォルトの名無しさん
垢版 |
2024/01/22(月) 03:17:34.54ID:laN06gwL
これマジ? どれくらいの確率で踏むんけ? コンパイルのバクはケアしたくないなあ
2024/01/22(月) 04:28:43.80ID:DrvqbiCd
>>12
意図的にvarianceの穴を突く無意味なコードを書かないと発生しないため>>9は無害
2024/01/22(月) 09:21:43.10ID:k43UrEGh
>>9
こんなコンパイラの脆弱性を突くようなコードを普通なら書かない定期
2024/01/22(月) 21:22:44.12ID:m6FRVxec
>>9は9年前の2015年から既知の有名なパターン
意味のあるプログラミングで絶対に踏むことはないため害はない
その特殊ケースに対応するデメリットの方が大きいため対策されていない
それらを踏まえたうえでIT大手が揃ってRustを採用しRust Foundationも設立された
2024/01/22(月) 21:31:04.02ID:l2He84BH
9のコードの意味が理解できないんだが何が問題なのか説明してくれ
2024/01/22(月) 22:53:37.35ID:6ImN7JeY
c++のテンプレートはチューリングマシンだから
無限ループを起こせるのは仕様の欠陥がどうか聞きたい
18デフォルトの名無しさん
垢版 |
2024/01/22(月) 23:05:33.08ID:YajFhzWL
f: impl for<'s> FnOnce(&'s str) -> (&'static str, [&'static &'s (); 0]) の説明だけ。
ライフタイム 's の str を引数にして、&'static str 型と、[&'static &'s (); 0] 型のタプルを返すクロージャが f ということ。
[&'static &'s (); 0] は &'static &'s () 型の長さ 0 の配列。
&'static &'s () は、ユニット型() のライフタイム 's の参照のライフタイム 'static の参照。

この &'static &'s () の部分で変なことが起きてそうと言っとるな。
2024/01/22(月) 23:14:04.77ID:T1sqP3ZB
>>17
C++ の仕様ではテンプレートの展開深度に上限を設定することを認めているのでチューリングマシンではない。
非現実的な回数のループが起こるのならそれは処理系の欠陥。
2024/01/22(月) 23:41:39.76ID:NA4FP1NO
>>15
1.65.0で新しく導入された回帰バグですって書いてあるし
2015年の#25860とも別だねってコメントも付いてますやん
2024/01/23(火) 00:35:34.27ID:AizsfBYE
>>18
文脈無視してその引用だけで言えそうなことは
&'static &'s T 型が存在するならば 's も 'static でなければならない
このルールに反しない限り &'s str を &'static str に変換してよい
2024/01/25(木) 23:09:32.35ID:iPN7/qe+
安全にこれで&'staticへ変換できる

fn to_static_str(s: &str) -> &'static str {
  s.to_owned().leak()
}
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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