X



Rust part12
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2021/08/24(火) 22:55:27.78ID:972JwtmU
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

Web上の実行環境
https://play.rust-lang.org

日本語の情報
https://rust-jp.rs/

※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/

※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/

※C++との比較は専用スレへ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/

前スレ
Rust part11
https://mevius.5ch.net/test/read.cgi/tech/1623857052/
0952デフォルトの名無しさん
垢版 |
2021/11/03(水) 12:07:17.82ID:gDAMFAnt
mutが必要ってより、for mutにfor let mutにならないことが不思議
0954デフォルトの名無しさん
垢版 |
2021/11/03(水) 18:34:42.48ID:+koatzK+
let パターン = ...
for パターン in iter
match パターン ...
fn hoge(パターン: TypeName, ...)
ってことやぞ
0955デフォルトの名無しさん
垢版 |
2021/11/03(水) 19:26:40.94ID:6uw3PT+q
Rustにはif let Some(3) = v {}とか、 while let Some(i) = a {}とかあり。letは不変のキーワードじゃなく
右辺に対するパターンマッチ展開で、for letがないのは、forはfor..inしかなく、Cのようなfor ;条件;の文が
存在しないためという考えらしいです。。。
0956デフォルトの名無しさん
垢版 |
2021/11/04(木) 06:57:56.88ID:9Ddr56R/
forで変数の初期化が要るみたいな発想になる時点でC由来の処理系に洗脳されているんじゃぁ・・・
0957デフォルトの名無しさん
垢版 |
2021/11/04(木) 13:00:03.95ID:UnTZr4yd
for p in v { … } は
v.into_iter().for_each(|p| …) と同じ機能たけど
長いメソッドチェーンな時など敢えてforでなくfor_each使ったりも
0958デフォルトの名無しさん
垢版 |
2021/11/04(木) 20:16:49.18ID:UnTZr4yd
ただしfor文は値を返せないのが弱点かな
イテレータならfor_eachの代わりにfoldしたりfindしたりあるいはmapやfilterなど色々処理して最後にcollectしたりと値を返せる
0959デフォルトの名無しさん
垢版 |
2021/11/04(木) 20:24:42.58ID:faLe9vBn
>>958
forやwhileは、そもそもループが実行されないパターンがあるので、それは無理ってなったらしい
だからloopでは値を返すことができるので、loopを使うぺし
0962デフォルトの名無しさん
垢版 |
2021/11/04(木) 23:50:24.53ID:faLe9vBn
>>960
ループ内は実行されないからNoneも返せないってことよ
loopは明示的に自分でbreakするから許容

let test: = if true { 1 };
たとえば、これでtestにNoneが入るとかおかしいことになるってわかるっしょ?
それと同じこと。
0968デフォルトの名無しさん
垢版 |
2021/11/05(金) 14:42:52.35ID:Z0sGs5cT
求人検索をしてみても、Rust使ってるとこなんて指で数えられるぐらいしかなさそうかな
0970デフォルトの名無しさん
垢版 |
2021/11/05(金) 15:29:07.01ID:ShfctMVX
試験的にGoからRustに切り替え中だよ。両方ともバックエンドとフロントエンドまでやってるのでそのまま移植出来て簡単…じゃなかった
インフラはサクッと終わったけど、フロントは素のWasmで実装するもGoより遥かに複雑で難解なRustでやる意味は?的な事になって
vDOM系フレームワークで実装するも、Non-vDOM系のが殆どの場面で速い事が分かったのでやり直し中


で、本番環境で運用できるのか?となると最初の印象に反して「出来る」と思うね。
動かし始めて不具合が出た時に、何処がヤバいのか分からない怖さがない。
過去の資産と経験則は捨ててRustのお作法に従うようにするのが大切、下手にアレを使いたいので使い回すとかやると余計苦労する。
0973デフォルトの名無しさん
垢版 |
2021/11/05(金) 20:33:04.86ID:JniLXeAQ
うちではバイトの女子大生も使ってるが
Rustを使うような企業はネット求人になんか頼らんだろうね、今のところ
0975デフォルトの名無しさん
垢版 |
2021/11/05(金) 23:26:41.71ID:DvmJ6O3T
Dominatorってこれか
https://github.com/Pauan/rust-dominator
virtual DOM使わずゼロコストでリアクティブか

ベンチマーク見るとVue/React/Angularなどは非常に遅いんだな
https://rawgit.com/krausest/js-framework-benchmark/master/webdriver-ts-results/table.html
Vanilla JSで頑張るのでなければRustでDominatorを使った方が良さそうってことか
ウェブフロントエンドまでRustの時代が来るとは驚き
0976デフォルトの名無しさん
垢版 |
2021/11/05(金) 23:41:27.00ID:7Nx3lyuG
おもしろそうだけど、メンテが辛くなりそう。仕事でそんなん大丈夫かしら?
0978デフォルトの名無しさん
垢版 |
2021/11/06(土) 01:50:27.76ID:BsA8c5Gl
>>975
少くともその表に載ってるsolidってのは非vDOM系のJSフレームワークだけど…
その表ではDominatorとどっちが速いですか?
そしてそれはなぜですか?
それを勘案しても、
Vanilla JSで頑張るのでなければRustでDominatorを使った方が良さそうってなりますか?
0979デフォルトの名無しさん
垢版 |
2021/11/06(土) 01:55:12.94ID:eYFGObaB
フロントエンドのwasmでrustを使う意味が分からん、assemblyscriptなんかでts変換したほうがよっぽど
人材確保も容易で速度も出そうだけど、まあ全部1つの言語に統一したいという欲望は分かるが
0980デフォルトの名無しさん
垢版 |
2021/11/06(土) 08:58:19.69ID:8rFQ20lW
その種の願望はいつだって失敗してるのに何回でもこだわるバカが出てくる。
ビジュアルプログラミングとかノーコード並みに愚かだわ。
0982デフォルトの名無しさん
垢版 |
2021/11/06(土) 10:40:16.97ID:YOvBnwY8
htmlマクロが微妙だよな。yewもしかり
マクロの仕様理解して書かないといけないからwebpackみたいなコンパイラー挟んでreact,vueみたいなhtmlベースでかけたら普及進むと思う
0983デフォルトの名無しさん
垢版 |
2021/11/06(土) 10:43:29.52ID:gG2xt4rU
フロントエンドはElmで書いた方がいいと思う
Elmの設計をパクったRust用フレームワークよりElmそのもので書いた方がいい
0984デフォルトの名無しさん
垢版 |
2021/11/06(土) 11:32:19.13ID:dvoeGWeX
>>979
WasmはもともとC/C++をブラウザのフロントエンドで使いたい願望から
始まったものだ。
意外に思うかもしれないが、C/C++を使いたい人はRustの1000倍くらい多い。
0985デフォルトの名無しさん
垢版 |
2021/11/06(土) 12:19:33.04ID:v/Totsm8
>>979
AssemblyScriptはメモリ管理GC問題があるし文法が単にTSの限定サブセットに過ぎないため色々と辛すぎる

そのためWebAssemblyでの使用言語調査結果もこんな状況でRustが圧勝
https://blog.scottlogic.com/ceberhardt/assets/state-of-wasm/desired-language.png

>>978
Wasm⇔JSのオーバーヘッドがあるので処理が少なくほとんどDOM操作になる時だけはJSのみで書いたほうが速い (当たり前)
そのためほぼDOM操作のそのベンチマークではRustフレームワークがわずか数%遅くなっているが現実には処理内容次第ですぐに逆転する

>>983
Elmは型クラス(Rustではtrait)がなく例えば抽象的なイテレータも持てず色々と辛い

このスレはRustにアンチな人がRustを貶めようと常駐して頑張ってるようだけど
Rustを用いるのがベストな方法な場合が非常に多いよ
0986デフォルトの名無しさん
垢版 |
2021/11/06(土) 16:27:09.97ID:Y613N0Im
もはや人類の発展はRustにかかっていると言ってもいい
0991デフォルトの名無しさん
垢版 |
2021/11/06(土) 21:39:59.60ID:1qW/ULGd
シャドーイングがよくわかりません。
変数名によって中身が一意に決まらなくなることによって、安全性も下がるし並列性?も確保できなくなる気がするのですが、変数が全mutableな言語より安全性マシだしRustは関数型言語じゃないから並列性そこまで重要視してないし書き味のが大事だぜってことですか?
0992デフォルトの名無しさん
垢版 |
2021/11/06(土) 21:47:09.97ID:PDDtrjdC
安全性も下がるし並列性?も確保できなくなる気がするのは気のせいではないでしょうか
0993デフォルトの名無しさん
垢版 |
2021/11/06(土) 22:22:33.53ID:9KDcj+aF
>>991
プログラミング初心者には難しいかもしれないけど
一般的にプログラミング言語ではスコープという概念があってスコープが異なれば同じ変数名でも全く別のものとして認識され格納場所は異なるし型が異なってもよい
その中でもブロックスコープは多くのプログラミング言語で採用されていてブロックが始まると新たなスコープが出来て同じ変数名でも全く別のものとして扱われる
今回のシャドーイングスコープも同様でシャドーイングの時点から新たなスコープが始まるため同じ変数名でも全く別の変数として扱われる
だから安全性は全く下がらないし並行でも並列でもシャドーイングで問題が生じることはない
むしろシャドーイングの利用で利便性が高まっていることがプログラミング経験を重ねると理解できる
0995はちみつ餃子 ◆8X2XSCHEME
垢版 |
2021/11/06(土) 23:40:03.82ID:tiSLGdpm
ダイナミックスコープがデフォルトの言語なんて Emacs Lisp くらいしか見たことないわ。
0996991
垢版 |
2021/11/07(日) 06:37:58.76ID:It35Zcf7
意図したシャドーイングならともかく、間違って同じ変数名つけたコード片突っ込んでしまった系だと他言語にあるらしい2重宣言エラーないの怖くないですか?

新たなスコープが生まれるので並列性に問題ないことはなんとなく理解できました
0997デフォルトの名無しさん
垢版 |
2021/11/07(日) 07:11:27.61ID:F+zOFISG
D言語の再来。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 74日 11時間 14分 14秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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