Rust part16

■ このスレッドは過去ログ倉庫に格納されています
2022/06/27(月) 08:17:03.45ID:gDlfKP6u
公式
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を学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust

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

※次スレは原則>>980が立てること

前スレ
Rust part15
https://mevius.5ch.net/test/read.cgi/tech/1652347700/
2022/07/23(土) 04:53:27.63ID:Yc68YnRu
>>444
意味不明なこと言わないで
2022/07/23(土) 05:40:41.12ID:xoLMiefm
>>435
C++だけでなくRustも理解できてない?


純粋に疑問なんですけどRust使ってる中で「値オブジェクトマジ助かる!」って事あるんですか。
適当に参照で渡したデータが意図せず書き換えられて伝搬して困る典型ケースはコンパイラが潰してくれる認識なんですが。
2022/07/23(土) 08:37:27.70ID:0xKT+wLu
>>447
それはRustじゃなく値オブジェクトを理解できてない
院卒の新人だったりしない?
449デフォルトの名無しさん
垢版 |
2022/07/23(土) 09:37:03.85ID:bR39w9BX
Googleは金の亡者
2022/07/23(土) 11:55:37.32ID:8Uydd8B4
>>448
低レイヤーのプログラマーは値オブジェクトとか知らないほうが普通
アーキテクチャ設計といったらCPUやメモリアーキテクチャの事だと思ってたりするw
2022/07/23(土) 13:10:56.93ID:RBxCW/xN
OwnershipルールとReferenceルールがWhat
Borrow CheckerはHowに相当

Howにももちろん価値はあるが
それと同じくらいWhatをシンプルに絞り込んだものにしたことにも価値がある

後知恵で見れば当然に見えるようなシンプルなルールを作るのはものすごく難易度が高い
452デフォルトの名無しさん
垢版 |
2022/07/23(土) 16:15:20.09ID:tefRxlpq
>>451
わかる
Rustのメモリ周りや、UnixとかRISC-Vみたいに、システムを動作させるに必要な機能の数をできるだけ小さくするのって難しいけど、完成品を見ると当たり前じゃんみたいな印象を受ける
2022/07/23(土) 18:34:20.81ID:u2Y0Vizw
>>445
残念ながらスパナーとか普通に実装してるgoogleにおいてはあんまり価値のある能力ではないよ。
454デフォルトの名無しさん
垢版 |
2022/07/23(土) 19:04:05.94ID:ehQy/P8s
ISO、C++標準化委員のグレイドン・ホアレ氏はC++0xの標準化過程で、後方互換性を削ぎ落せば理解しやすくなることに気が付く。
そして私的プロジェクトとして実装し始めた。
2016年4月、ホアレ氏は最初の製品をRustと命名し出荷した。
2022/07/23(土) 19:21:14.26ID:NE7ljYY1
C++標準化委員の人でもあったんか
それにしてもRustっていいネーミングだよな
なんかしっくりくる
456デフォルトの名無しさん
垢版 |
2022/07/23(土) 19:57:02.71ID:uphZtYPd
正直なところ一般的な単語とか1文字とかの言語名はやめて欲しいと思わなくもない。
2022/07/23(土) 20:43:26.21ID:PgM2fTTz
>>453
逆じゃね。自分たちで作ってるからこそアルゴリズム方面の知識の意味があるのでは
2022/07/23(土) 21:05:19.84ID:IDFlcwhf
>>454
Hoareはホーアかホアだと思うんだが
ホアレはどこの国の読み方?
2022/07/23(土) 21:18:57.29ID:91gi6HhK
日本じゃね?
2022/07/23(土) 21:28:49.17ID:zqWGCIwO
>>456
昔は大変だったけど今時はグーグルさんもだいぶ賢くなって来たから〇 言語や〇 langでいける
2022/07/23(土) 22:37:12.56ID:SkYdpzS6
>>454
>2016年4月、ホアレ氏は最初の製品をRustと命名し出荷した。
2006年の間違いじゃない?

ちなみに>>451に書いてるReferenceルールやBorrow CheckerはGraydon時代にできたものじゃないよ
2022/07/24(日) 09:21:08.56ID:lG8qI40d
>>461
じゃあいつできたの?
463デフォルトの名無しさん
垢版 |
2022/07/24(日) 09:29:10.51ID:TkuAh24s
RustじゃなくてHoareの方が検索性は高かったと思う
言語に自分の名前つけたっていいじゃん、最初だけイタい人扱い受けるだけだし
2022/07/24(日) 12:23:10.54ID:A2ivE9+A
でも本当にHoareなんて名前付けたら絶対Tony Hoareのほうだと思われるやろな
2022/07/24(日) 12:53:11.52ID:lG8qI40d
>>464
ほんこれ
あんな有名人とfamily nameが一緒とかすごい偶然だよな
466デフォルトの名無しさん
垢版 |
2022/07/24(日) 13:06:01.37ID:hnBeY/7d
木村拓哉と苗字が同じ木村君みたいな。
2022/07/24(日) 13:06:50.57ID:iVL8opWs
すごい偶然ですねえ・・・ えっ
2022/07/24(日) 13:35:38.58ID:q7gbemmZ
Rust-Oneとか見たいな感じの名前が良かったんじゃないかとw
2022/07/24(日) 13:48:30.68ID:q7gbemmZ
新言語を作る際にはありふれた言葉を使うなってコンセンサスがあれば…

C java go Perl Ruby Rust ...
2022/07/24(日) 13:53:14.16ID:iVL8opWs
せめて後ろに +lang した名前を正式名称にしてくれりゃなあ
Javalang、Clang、Golang、Rustlang...
clangは名前衝突するから今更ムリだけど
2022/07/24(日) 14:08:13.51ID:6QULAMze
RustとかGoはもう今じゃメジャーだから大分マシだけど
上の方に出てるCarbon?だのみたいな新しい知名度低いようなのにとっちゃ検索されづらいのって結構大きいデメリットじゃないのかね
2022/07/24(日) 14:11:15.69ID:q7gbemmZ
Car-bonおすすめ
2022/07/24(日) 17:26:22.59ID:AIK5SBoS
Rustでは検索にこまったことないけどなぁ
CやGoではそれなりに困ったことある
特にC
2022/07/24(日) 17:35:43.91ID:nz/s3YoW
>>469
perlは違うくね
入れるならpython
2022/07/24(日) 18:34:31.10ID:kd/zxSl1
Pythonはまさかちょっとしたイタズラ心で命名した言語が
30年経ってこれほどまでに普及するとは思ってないだろうなぁ。
2022/07/24(日) 20:35:51.30ID:T5Io3liY
ゲームのRustが人気になっていても問題なく検索できてるなぁ
2022/07/25(月) 09:42:55.60ID:OE8E5RfU
パーソナライズ (その人のアクセス傾向を検索結果に反映する) がそこそこ機能してるっぽいという話はあるなぁ。
個人情報保護の法律との兼ね合いが難しいみたいだが。
2022/07/25(月) 11:46:03.92ID:fotNOYOj
RustはCやC++の後継にはならないな。
2022/07/25(月) 12:46:43.99ID:/yXgS7y/
CはC言語で検索してもC++が出てきやがるからな
迷惑な言語だわC++
2022/07/25(月) 14:10:01.30ID:fotNOYOj
全然、思想や人柄が違う人を後継者に立てようとしても無理が有るな。
2022/07/25(月) 19:30:13.93ID:qs4kuyp6
>>456
その例でいってとにかくクソダメなのが Go
言語仕様も前時代的なウンコみたいな仕様だが何がだめといって名前がクソすぎ
ついでにいうとマスコットが致命的にキモすぎる
482デフォルトの名無しさん
垢版 |
2022/07/25(月) 20:08:08.67ID:uz33IoOs
goはgolangって呼び方が一般化してるから問題なくね?
親会社もalphabetだし、仮に一般名詞でも検索してやんよっていう自信の現れなのかも。
あとlisp monsterのほうが可愛いよね
2022/07/25(月) 21:31:20.25ID:o3/zkeTE
langってなに?
484デフォルトの名無しさん
垢版 |
2022/07/25(月) 21:42:28.43ID:GF1rw+EH
ゴラン高原はイスラエルが不法に占領してるシリアの土地であり、日本政府はシリア高原と呼称するそうだぞ。
2022/07/26(火) 07:10:48.91ID:4TZ4RWr2
今ちいかわってキモいキャラが流行ってるように
Gopherくんもいずれ世界的なマスコットキャラクターになるよ
2022/07/26(火) 08:04:10.89ID:B/e7/0Va
>>484
それはGolan
2022/07/26(火) 08:15:07.77ID:RlhOzjvN
今マイコン用クレートでメジャーなのってどのあたり?
自分で作るにあたり参考にしたいのだが
2022/07/26(火) 08:36:59.30ID:+EhcIf+H
>>487
おれたちが知るわけないだろバカか?
489デフォルトの名無しさん
垢版 |
2022/07/26(火) 08:37:23.50ID:jFWmtimM
言語の名前がGopherだったらよかったのに
2022/07/26(火) 09:10:32.87ID:gGUkeHRo
プロトコルの方のgopherについて調べる人が困るでしょ
2022/07/26(火) 09:38:10.98ID:hAg2HYen
プロトコルはイーサリアムとビットコインで実現出来ます
この2種類以外は今後不要になります
2022/07/26(火) 09:42:41.59ID:xvJteLGG
😲
2022/07/26(火) 09:57:43.88ID:khPn0eWd
>>491
2022/07/26(火) 11:19:17.05ID:wEdk200U
Web3なんて流行るわけねーだろ
スマートコントラクトの開発コスト高すぎ&不便すぎ
2022/07/26(火) 11:50:54.04ID:m36KkBXx
それに引き換えBorrow Checkerは開発コスト低くて便利だね
2022/07/26(火) 11:55:05.12ID:xpFZew7X
Rust=Web3 だからWeb3業界の勢いが無くなったら影響受けるよ
2022/07/26(火) 11:59:58.82ID:EbLORSqB
>>496
意味不明
2022/07/26(火) 12:14:19.05ID:/Gebh7sM
Etherはイーサーだけど
Ethereumはァセーリアム
日本語読みだと外人に通じないから注意な
2022/07/26(火) 12:46:34.54ID:NppJ7uYb
>>487
AVR-HALとかいうやつ使ってる
2022/07/26(火) 14:54:22.29ID:6ZBHWj0q
3年以内にMoveが天下取るとか言われてるけど本当かね
2022/07/26(火) 14:58:00.69ID:m36KkBXx
本当だから高くなる前にいっぱい買っておけ
2022/07/26(火) 21:01:19.60ID:WAPUil1D
ʕ◔ϖ◔ʔ
2022/07/27(水) 00:16:39.59ID:Zq3V4Tcb
>>500
Moveってなに?
2022/07/27(水) 01:54:06.44ID:qGGsA3uX
>>503
最新のブロックチェーン言語も知らない奴はここから消えて
2022/07/27(水) 05:50:23.11ID:Zq3V4Tcb
>>504
あれLibraってまだ生きてんの?
ぜんぜん音沙汰聞かないけど
506487
垢版 |
2022/07/27(水) 07:28:03.29ID:6+JEeGDS
>>499
ありがと。見てみます
どのくらいのさじ加減が使いやすいのかが難しい・・・
507デフォルトの名無しさん
垢版 |
2022/07/27(水) 07:32:05.65ID:6nSf0k+r
>>503
ダイハツの軽自動車
2022/07/27(水) 10:27:27.45ID:IW7fj0uw
>>505
名前変えた後継含めて公式に死んでる
2022/07/27(水) 19:19:33.01ID:U29fl458
>>505
世界に殺された
もし生まれたら恐ろしいことになってただろうしな
2022/07/28(木) 00:38:58.21ID:z/Vvst4i
アレはAptosとして生き残った
大型の資金調達を連発して次の投機の標的になってる
2022/07/30(土) 22:19:27.63ID:wZaxY20D
std::io::Result<()>
↑の()ってなんすか?
Ok(());
↑の()も。
「空」を意味してるってことでいいんですか?
2022/07/30(土) 22:34:27.43ID:PnFWbFUc
5つの何かを返す関数なら
return (a, b, c, d, e);
0つの何かを返す関数なら
return ();
と考えてもよく何も返さないこと
2022/07/30(土) 22:39:27.64ID:xUdiS2xM
https://doc.rust-lang.org/std/primitive.unit.html
2022/07/30(土) 22:41:59.23ID:wZaxY20D
>>512
>>513
どうもありがとう
2022/08/01(月) 16:04:37.53ID:ElZDPbmW
Meta社のバックエンドにRust推奨だってよ。
https://www.publickey1.jp/blog/22/metafacebookrustpythonchack.html
2022/08/02(火) 02:20:06.29ID:M8Mca9lV
bevy 0.8
https://bevyengine.org/news/bevy-0-8/
517デフォルトの名無しさん
垢版 |
2022/08/02(火) 23:33:57.17ID:FkNkpg49
bevyとFyrox Engineはどちらの方が良いのかな
人気度はbevyな気がするが
2022/08/04(木) 02:28:39.18ID:xaY+36ag
Rustでプラグインシステム組むならwasiが安牌かな
2022/08/04(木) 09:59:47.35ID:CkQzFtco
プラグインシステムとは
2022/08/04(木) 12:38:32.91ID:pLEfRi/j
エディタとかツールの機能拡張だよ。
RubyとかJVMとかある程度の動的さを持つランタイムがあると開発楽だけど、GoやRustみたいにスタティックリンク、シングルバイナリが基本になると
たしかにwasmベースで作るのが筋が良いのかねぇ。
2022/08/04(木) 12:57:45.66ID:qyv7p4eK
おいおいww
2022/08/04(木) 13:50:49.10ID:ck4xiQdl
クロスプラットフォームで同一バイナリが動いてそこそこ高速で組み込み用途に向いてる
という条件だとLuaかwasm
2022/08/04(木) 13:51:05.48ID:ck4xiQdl
JSでも良いが
2022/08/04(木) 15:10:31.96ID:b+TNnTjV
プラグインというよりマクロの実行環境の話だな
Luaやwasmはホストアプリにランタイムを同梱する必要がある
2022/08/04(木) 15:23:41.09ID:1k9fnhsy
Luaやwasmを使うようなスクリプト型(スクリプト言語のことではなくて、上位レイヤのシナリオだけをユーザーに書かせる方式)の拡張って、
よほどホスト側にプラットフォームとしての魅力がない限りは成立しないよ
ホストがスクリプトに対して提供している機能以上のことはできないわけだからな
そうじゃなくて、やりたいのはホストにない機能を追加できるプラグイン機構じゃないの?
2022/08/04(木) 15:39:46.71ID:9TNfUmNd
>>520
Rustでやりたいってことは実行速度を重視してるんだろうし動的リンクしかないだろ
しかしwasmにしてもいいっていうならJavaScriptやらLuaの活用も検討しろ
2022/08/04(木) 15:55:10.42ID:hPtMGH66
そういえば Rust の proc macro を wasm としてコンパイルしたらどないやという話はあったんじゃなかったっけ?
最終的にどういう結論になったのか追ってないんやが……。
必要な機能は Rust コンパイラの中に全部あってシステムの外とやり取りする必要もないから良い案に思える。
2022/08/04(木) 17:17:23.18ID:KbhCPu0a
>>525
Luaやwasmからホストの用意した機能を呼び出す形だけでなく
ホストからLuaやwasm側の処理を呼び出す形も実装可能だよ
DLLに比べると相当手間がかかるけど
2022/08/04(木) 17:19:43.26ID:ck4xiQdl
動的リンクするにしてもABIがunstableだからインターフェースはextern "C"で公開せざるを得ないし
それなりの量のグルーコードが必要になるかと
その辺良い感じにどうにかしてくれるcrateがあるかもしれないけど
2022/08/04(木) 17:29:05.26ID:1k9fnhsy
>>528
そうしたとしてもホスト側に存在しない(ホストからスクリプトに対して公開されていない)機能は使えないでしょ?
2022/08/04(木) 17:46:52.95ID:CkQzFtco
https://qiita.com/dalance/items/1593b56ad3744c469643

コメント欄も含めるとなかなか情報がまとまっています
2022/08/04(木) 17:49:06.27ID:8PPO9uzK
良さげ記事
2022/08/04(木) 17:58:11.58ID:hPtMGH66
>>530
ホスト側を経由せずに外にアクセスするのは禁止できたほうが嬉しいことも多いだろ?
俺が使っているソフトでプラグイン機構があるものというと画像ビューアとかメッセンジャとかだが
それほど自由に外の世界にアクセスする必要はないし、不必要ならアクセスさせないに越したことは無い。
(悪意あるプラグインを作り難くなるので。)

制限があるというのと制限を付けられるのは表裏一体なのでそんなの場合によるとしか……
2022/08/04(木) 18:01:34.69ID:9TNfUmNd
>>529
> 動的リンクするにしてもABIがunstable
あー、そうだったわ
めんどくさいんだった
2022/08/04(木) 18:42:08.03ID:pLEfRi/j
野良プラグイン入れて環境壊して上等!って時代でもないからねえ。
ある程度、できること制限できるようにしたプラグイン機構も大事な時代よ。

そういう点でwasmがセキュリティとパフォーマンスのバランスが取れていて魅力という層もあるでしょ。
2022/08/04(木) 18:42:45.33ID:KbhCPu0a
>>530
そりゃ広い意味で言えばどんな機能だってホスト側に存在してなければ使えない

「ホストにない機能を追加できるプラグイン機構」ってどんなものイメージして言ってるの?
2022/08/06(土) 12:18:12.84ID:z/fLyAW1
今の環境で正しくレンダリングされる10年前に作られたWebサイトは多くない
同様にTauriで作成されたアプリが10年後でも問題なく使用できるのだろうか
2022/08/06(土) 20:40:11.73ID:6gQA87rg
Tauriはバックとフロントが明確に分離されているからOS標準ブラウザに変更があっても修繕はしやすそう
Macとかだと突然仕様変えてきそうで怖いな
2022/08/07(日) 00:00:20.59ID:pGypWfdH
Rustでライブラリをどうやって選定してんの?
crate.io見て人気のを選んでんの?

GETだけのためにhttpclient使おうとしたらtokio入れて使えとか全然意味わからんしコンパイルしたら
これを使うには2018使えと2022使えが出てくる…


他のに変えても変わらず
GETなんてコピペ産業で実現させてくれよ

use
初期化
GET

これで終わらせてくれ
2022/08/07(日) 00:05:00.47ID:pGypWfdH
別に

use
GET

の2行でもいい
2022/08/07(日) 00:19:22.87ID:thO2Aez3
>>539
まあ今はそういう人向けの言語じゃないからね

とりあえずreqwestのblocking clientでやってみて合わなそうならあきらめろん
2022/08/07(日) 00:27:13.75ID:pGypWfdH
crate.ioにwebclient一覧が並べてあるけど結局最近のダウンロード数見て判断なんだろうなと

どれもtokio使ってるしCurlコマンドみたいに一発でGETやPOSTって感じでもない
tokio必須と言うことは標準でasyncライブラリの完成度が低いんだろうけど
憶測が当たってるかどうかもよくわからない
2022/08/07(日) 00:48:31.33ID:yGip1YMx
>>542
Rust は標準ライブラリの中に非同期ランタイムを持ってない。
言語として非同期を扱えるようにしつつ具体的な部分は外部のクレートに任せられるように
分離に成功しているという意味では十分に完成度は高いとも言える。
2022/08/07(日) 01:05:02.63ID:nCVSRdWl
>>539
簡単これだけ

#[async_std::main]
async fn main() {
let uri = "https://httpbin.org/base64/SGVsbG8sIFdvcmxkIQ==";;
let s = surf::get(uri).recv_string().await.unwrap();
assert_eq!(s, "Hello, World!");
}

Cargo.tomlの[dependencies]に適当に
async-std = { version = "*", features = ["attributes", ] }
surf = "*"
2022/08/07(日) 05:20:01.36ID:FgVTxKNL
簡単に使いたいなら、非同期じゃなくて同期版のhttpクライアントライブラリ使いなよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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