Rust part22

レス数が1000を超えています。これ以上書き込みはできません。
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/
907デフォルトの名無しさん
垢版 |
2024/02/19(月) 21:38:55.37ID:BnjhEPJH
>>906
結局さ一周回ってAdaで良いんじゃ?
2024/02/19(月) 21:46:39.06ID:VDl5KQ6V
オーガスタちゃんが平伏せと命令する言語?
909デフォルトの名無しさん
垢版 |
2024/02/19(月) 22:19:23.32ID:hvnIqBoW
Web用途だとRustはtokioと関連ライブラリが必須だからGoよりランタイム大きくなるけどね
2024/02/19(月) 22:41:42.37ID:+OQMy10I
>>909
Rustバイナリが小さい
tokio+hyper他で特別な指定もなく普通に作ったweb server実行バイナリがstrip後に1.3MB
2024/02/19(月) 23:17:36.45ID:aeOZND98
サーバーエンドでバイナリサイズなんてどうでもいいけど専有メモリ量がJavaやGoより小さいのはよい
2024/02/20(火) 03:09:16.36ID:sgoVzbhC
Rustってcargo buildとかやると通信量結構えげつない
2024/02/20(火) 08:39:03.07ID:VuVDzPkr
依存関係があるライブラリをダウンロードすれば Rust に限らず
それなりにたいくさんひっついてくるのはよくあること。
2024/02/20(火) 08:51:21.95ID:HobPlk1l
C++でビルドする前にapt-getしてね、ってのも同じことだしな
915デフォルトの名無しさん
垢版 |
2024/02/20(火) 09:54:42.94ID:avQkuhyK
Rustだと依存ライブラリの数が桁違いに多くなるのが原因
2024/02/20(火) 10:20:25.82ID:VuVDzPkr
お前それ、 JavaScript の前でも同じこと言えるの?
917デフォルトの名無しさん
垢版 |
2024/02/20(火) 10:20:33.45ID:kmanQ674
>>903
その通り
Rustの次に期待
918デフォルトの名無しさん
垢版 |
2024/02/20(火) 13:00:59.06ID:MPPpoDC+
>>907
ブロックが波カッコだったらなぁと思ったことある。
919デフォルトの名無しさん
垢版 |
2024/02/20(火) 13:46:52.53ID:sgoVzbhC
一回DLしたパッケージOSにキャッシュしてくれればいいんだけど
そうじゃないから学習でやってると無尽蔵に取りにいくのはなんとかならんのか
2024/02/20(火) 14:05:25.22ID:VuVDzPkr
>>919
えっ、普通にキャッシュしますが……。
2024/02/20(火) 14:18:44.11ID:YaBXE8T+
>>919
1回しかダウンロードしない
その後はそのキャッシュを用いる
2024/02/20(火) 14:47:39.06ID:NZma60kC
それよりディスク使いすぎだろ
ビルドの中間生成物が簡単にギガ単位になる
923デフォルトの名無しさん
垢版 |
2024/02/20(火) 15:44:30.40ID:s70xdtq8
>>922
それな
複雑なコンパイラでインクリメンタルビルドを高速化するには空間性能を犠牲にするしかないんだろ
2024/02/20(火) 15:54:29.36ID:VuVDzPkr
大きなライブラリは動的リンクすることにしてもいいけど、
そしたら実行環境の管理と開発環境の管理を分離しづらくて面倒くさくなる。
どうやったってどこかに負担はかかるならストレージさえあれば
だいたい解決ってほうがいいという戦略なんだろ。
2024/02/20(火) 18:32:02.94ID:NZma60kC
Rustほどディスク使う言語他にあるの?
桁違いに多いと思うんだが
926デフォルトの名無しさん
垢版 |
2024/02/20(火) 18:32:44.23ID:pzacWR0B
ディスクはまあTB行かなければ何をやっても良いわ
927デフォルトの名無しさん
垢版 |
2024/02/20(火) 18:46:34.01ID:2x98KEBQ
ビルドキャッシュの一部を何もしなくてもプロジェクト跨いで共有してくれればまだいいんだけどね
用途的に外部ストレージやNASに置くようなものじゃないというのが困るところ
2024/02/20(火) 18:56:04.80ID:qhUDP5tY
Rust (cargo)のソースダウンロードしてすべて同一マシンでビルドする前提の設計はいいと思う。
soとかdllとかjarみたいなの、あまり信頼したくないというか。
929デフォルトの名無しさん
垢版 |
2024/02/20(火) 19:01:23.73ID:aUCxPGU2
Crates.ioを信頼してどうせ落ちてきたもの毎回ソース全行確認したりはしないんだから、落ちてくるものがバイナリになっても別に良いかな
2024/02/20(火) 19:12:55.50ID:HobPlk1l
so使ってsymbol not foundとかよくあるしな
基本的にC++ソフトのビルドは作者が使ってるディストリでしか再現しないと思ったほうがいいくらい
しょうがないからDockerでビルド環境作ったりするけど面倒だしディスクも食うし
結局ディスクキャッシュが多少多いくらいで済んでるRustが一番マシな気がする
931デフォルトの名無しさん
垢版 |
2024/02/20(火) 19:56:43.04ID:hRyg00SZ
soが悪いのではなくまともなパッケージマネージャーもまともな依存解決ツールもないのが悪い
2024/02/20(火) 20:07:01.59ID:+of8n4/M
確かにOS非依存のC++標準パッケージマネージャと中央レジストリがあれば良かったかもね
ただその場合でもABIが不安定なのはどうしょうもないから
Rustと同じく手元で全部コンパイルする方式になったと思うけど
2024/02/20(火) 20:11:30.03ID:VuVDzPkr
Cargo 風の管理をする C++ 用パッケージマネージャはある。
最初からそのパッケージマネージャ用に構成してくれてないと
なかなか素直にはビルドできないことに変わりないんだけど。
パッケージマネージャが優秀でも C++ 世界では
「統一されていない」ことが面倒くささになってる。
934デフォルトの名無しさん
垢版 |
2024/02/20(火) 21:39:15.46ID:1smOJz8O
そう考えると中間言語形式で配布できてAOTコンパイルもできる.NETがさいつよって話?
935デフォルトの名無しさん
垢版 |
2024/02/20(火) 21:43:07.30ID:BYbBGAeA
NuGetが使いやすいと感じた事がないし、充実していると感じたこともない
2024/02/20(火) 21:59:58.18ID:VuVDzPkr
>>934
dotNET は事前コンパイルしてもランタイムサポートの分厚さ (にかかる実行コスト) は避けられないので
コンピュータの性能を絞りきるようなつよつよ最適化は無理じゃないかなぁ。
いろんな方式の良いところを上手く取り入れて総合的には良いものに仕上がってるとは思うけど
それが最強かというと状況によるんじゃないの。
2024/02/20(火) 22:14:04.42ID:sgoVzbhC
>>921
チャプターサンプル毎にプロジェクト作ったら毎回DLしてるように見えるけど
2024/02/20(火) 22:16:27.29ID:FbkkUU+G
パッケージの使い勝手という意味ではdocs.rsの存在も大きい気がするな
どんな野良ライブラリでも決まった場所に決まったフォーマットのAPI一覧が確実に存在するというのはかなり便利
2024/02/20(火) 22:30:04.17ID:VuVDzPkr
ドキュメントを全く書かなくても少なくとも公開されている一覧はわかるってのは強い。
最悪の場合でもコードへのリンクもあるし。
Haskell のリポジトリがこういう感じだったので他の言語でもこれくらいやればいいのにと思ってたから
Rust で取り入れてくれたのはかなり嬉しい。
2024/02/20(火) 22:37:39.60ID:NZma60kC
>>926
いや、スマホでセルフ開発する時に困るだろ?
2024/02/20(火) 22:45:53.34ID:VuVDzPkr
>>940
そんなやつはおらんで〜〜
2024/02/20(火) 22:47:07.61ID:1CgxDriU
ス、スマホ?
943デフォルトの名無しさん
垢版 |
2024/02/20(火) 23:05:21.55ID:YDnp1LJs
procマクロとかコンパイル環境で展開したいものを除くとtarget指定した環境に依存するだけだから手元でコンパイルする必要性は全くない

いずれにしろどこでビルドするかと中間生成物のサイズが異常にデカくなる話とは別の話だよね
2024/02/20(火) 23:07:55.15ID:VuVDzPkr
もしスマホで開発する人がいたとしても
レンタルサーバに接続して表面上の操作にスマホを使うだけで、
実質的なストレージ・計算リソースはサーバのものを使う形にするのが普通。
スマホ内で完結させようとしたらツールチェインをセットアップするだけでもクソ面倒くさい話になるぞ。
2024/02/21(水) 00:35:56.53ID:ax8uXPdD
働いてないとスマホで開発するとかいう前代未聞の人間がいるんだな
946デフォルトの名無しさん
垢版 |
2024/02/21(水) 01:44:30.82ID:q3i686zw
スマホで開発はむしろ最先端
2024/02/21(水) 05:17:16.65ID:cGlapTzK
iPhoneが出たばかりの頃から、脱獄して開発環境を入れてObjective-Cでプログラミングしてる人は一定数居ただろ。
最近では、どのプログラミング言語でも使えてLinux(Android)と遜色ないよ。
今のスマホは、外部モニターも外部SSDも繋げるし、外部グラボのGPUでLLM開発だってできる。ほぼほぼRaspberryPi5と変わらないよ。
だからこそ組み込みにも強いRustが注目されてるんジャマイカ
2024/02/21(水) 05:44:41.84ID:cGlapTzK
スマホでRustformersからLLM開発する場合、ローカルにOllama入れとくか、サーバにGPT-4やLlama2を入れとくかぐらいの違いしかない。
Google Coralもスマホでも使える前提の製品で、このチップは発熱量が減ればスマホに内蔵されるだろう。
実際、Vision Transformerのような技術を応用しているApple Vision Proが製品化されたから、スマホからこういった機器に移行するのかもしれない。
今後数年間、これらの技術動向から目が離せない状況が続くんだろう。
2024/02/21(水) 08:28:43.22ID:/iiJfWDN
ダウンロードしたクレートキャッシュの自動削除はもうすぐ来そう
ビルドキャッシュの自動削除はその後実装予定っぽい
https://blog.rust-lang.org/2023/12/11/cargo-cache-cleaning.html
2024/02/21(水) 08:31:36.21ID:/iiJfWDN
グローバルなビルドキャッシュ共有の話も予定には挙がってるね
951デフォルトの名無しさん
垢版 |
2024/02/21(水) 09:05:07.84ID:33Eh81yS
>>934
何を基準でさいつよかの定義による

デスクトップ
Web
バックエンド
iOS/Android
ゲーム

とC#だけで全部作れる
各分野でベストな選択肢では無いけど平均点以上のベターではある
とりあえずC#使えれば何でも作れるという意味ではさいつよ
2024/02/21(水) 09:19:16.71ID:VUY6mIOu
>>951
.netの毎年の長文blog最適化レポートを見ると2年後くらいでNativeAOT最適化がC/C++に肉薄すると思う
953デフォルトの名無しさん
垢版 |
2024/02/21(水) 10:25:34.81ID:ygn/feiE
デスクトップ
Web
バックエンド
iOS/Android
ゲーム

とC言語だけで全部作れる
各分野でベストな選択肢では無いけど平均点以上のベターではある
とりあえずC言語使えれば何でも作れるという意味ではさいつよ
チューリング完全なので
954デフォルトの名無しさん
垢版 |
2024/02/21(水) 10:33:55.14ID:3B94ePzU
無能なやつほどゴールデンハンマー症候群に罹患しやすい
955デフォルトの名無しさん
垢版 |
2024/02/21(水) 10:37:42.60ID:33Eh81yS
>>953
嘘ばっかりだなw
2024/02/21(水) 12:23:52.50ID:FRHKNAr+
>>949
さすがに問題として認識はしてたんだな
スマホセルフ開発の日は近い
2024/02/21(水) 12:50:43.67ID:ax8uXPdD
マジでスマホしか持ってないの?
クソワロタ
2024/02/21(水) 13:41:48.13ID:s/93fWsg
ウェアラブル系の機器には失望した。
どこへでも持っていけるよりどこへも往く必要のないインフラこそ目指すべき未来だろ。
959デフォルトの名無しさん
垢版 |
2024/02/21(水) 14:32:00.13ID:T2E+AzfY
>>954
同意
960デフォルトの名無しさん
垢版 |
2024/02/21(水) 15:10:22.61ID:KvtS9dqN
>>958
背もたれ付きベッド
961デフォルトの名無しさん
垢版 |
2024/02/21(水) 15:11:12.28ID:KvtS9dqN
>>953
Rustはチューリング安全だぞ
962デフォルトの名無しさん
垢版 |
2024/02/21(水) 16:06:34.40ID:RjxZ1GsP
>>957
働いてないと「スマホで開発==スマホしか持ってない」という発想になるんだなww
2024/02/21(水) 16:15:10.41ID:cGlapTzK
>>960
ベッドといえばフランスベッドが取り扱ってるAI 視覚支援機器『オーカム マイアイ2』(OrCam MyEye 2)は、
イスラエルのオーカムテクノロジーズ(OrCam Technologies Ltd)の製品だったな。
これは活字の読み上げみたいだけど、寝具メーカーは、どこへも往く必要のない未来インフラをAI使って目指してるんだろう。
ウェアラブル系が狩猟型・動物型とすれば、寝具系は農耕型・植物型なんだろうな。人間は生活の約3割は寝てるんだから当然だけど。
2024/02/21(水) 16:30:25.40ID:vYwp44u6
表向きはどうであれたぶん寝たきり用だから話を膨らませるのはそのくらいにしとけ
2024/02/21(水) 16:47:28.48ID:OHlXXLmE
いくらなんでもスマホでコーデングはせんやろ
966デフォルトの名無しさん
垢版 |
2024/02/21(水) 16:49:23.05ID:1mshJDzd
寝たきりで親指しか動かないとかならスマホでコーディングするかもしれん
2024/02/21(水) 16:54:05.86ID:s/93fWsg
性能がどうこうよりもシンプルに画面が狭いのはすごくつらい。
無理。
2024/02/21(水) 18:17:59.27ID:ax8uXPdD
>>962
いやお前に当てはめてるだけだぞ
何言ってんだ?
969デフォルトの名無しさん
垢版 |
2024/02/21(水) 21:37:40.46ID:4F0o6gVI
はちみつ餃子氏最近見ないからRust関連は触れないことにしたのかと思ったらコテ外して書き込みに来ててわろた
2024/02/22(木) 16:00:18.09ID:o0M/RgFs
>>969
新スレ立ったときに名前欄に入力するのを忘れてたままやな
2024/02/22(木) 23:42:55.14ID:1e40BABA
>>949
毎晩ならその機能もう使えるのか
972デフォルトの名無しさん
垢版 |
2024/02/23(金) 12:05:46.18ID:vPqrWVzU
今のスマホって値段はPC並みなんだから、スマホでの開発環境出てこいと思わなくも無い。
もちろんその場合は外付けのディスプレイとキーボードつけるだろうが。
973デフォルトの名無しさん
垢版 |
2024/02/23(金) 12:05:51.79ID:vPqrWVzU
今のスマホって値段はPC並みなんだから、スマホでの開発環境出てこいと思わなくも無い。
もちろんその場合は外付けのディスプレイとキーボードつけるだろうけど。
974デフォルトの名無しさん
垢版 |
2024/02/23(金) 15:12:44.34ID:z6SHyxko
iPadでXcode使えるからそれで遊んでみれば
2024/02/23(金) 15:20:09.67ID:CheDQupm
Rustが使えないとな
2024/02/23(金) 15:21:05.22ID:jTrUecQ5
クソスレまで立てちゃってw
素直に中古のノートPCでも買えよ
977デフォルトの名無しさん
垢版 |
2024/02/23(金) 16:04:17.89ID:02Kw336h
traitの種類多すぎて把握しきれん
使い分けもようわからんし
2024/02/23(金) 16:18:25.67ID:NJWNbZ5N
Pythonのpep20みたいなってRustにもあるの?
979デフォルトの名無しさん
垢版 |
2024/02/23(金) 16:32:06.33ID:eHVJk53E
スマホやタブレットなどのモバイルOS上に開発環境用意するのは主に2つユースケースがある
1つはモバイルOS上で実行させる小さなユーティリティを作るため
だいたいlinux emulatorみたいなアプリ内環境で稼働させる
もう一つは出先の空いた時間や障害対応等の緊急時にノートPCを持ち歩かなくても簡易的な作業なら対応できるようにしておくため

前者はスマホだけで作るやつもいるにはいるが少数派
なので今のところはメイン開発環境は別に用意してるのが大半
2024/02/23(金) 17:15:31.94ID:kgcjkDLJ
PEP20って何だよと思ったらあのウンコポエムだった
2024/02/23(金) 17:26:44.63ID:kgcjkDLJ
次スレタイトル間違えてしまったのですまんが誰か立て直してくれ
規制食らってもう立てられなくなった
2024/02/23(金) 17:35:21.56ID:CheDQupm
>>977
traitとは機能を抽象化した抽象型だから使いたい機能のtraitを選ぶか作ればよい
structなどの具象型は各々必要な各機能(trait)を実装しているもしくは実装すればよい
そして抽象型(trait)を用いてプログラミングすることでその機能を実装する全ての具象型を対象とした共通コードにできる
2024/02/23(金) 17:38:39.47ID:CheDQupm
次スレ
Rust part23
https://mevius.5ch.net/test/read.cgi/tech/1708677472/
2024/02/23(金) 17:45:54.27ID:kgcjkDLJ
>>983
ありがとう
2024/02/23(金) 17:51:32.20ID:jYYzpIEX
>>978
こういうのをまとめようとはしているよ
https://smallcultfollowing.com/babysteps/blog/2023/12/07/rust-design-axioms/
986デフォルトの名無しさん
垢版 |
2024/02/23(金) 20:10:18.94ID:1IK2X2kO
>>982
FromとかAsRefとかDerefとかの時点でもうようわからんぜ
2024/02/23(金) 22:42:10.08ID:oukljDwS
Fromは汎用的な変換だよ
変換に失敗する可能性を含む時はTryFromを使う

AsRefは参照から(別型の)参照への読み替え変換
コストがかからない場合が対象
コストがかかるものはFromを使う

Derefは変換ではなく演算子
変換は複数の型への変換を実装できるけど
演算子なので各型で決められた一つの型へderefできる
&T→T
Box<T>→T
Rc<T>→T
Vec<T>→[T]
String→str
PathBuf→Path
など
988デフォルトの名無しさん
垢版 |
2024/02/23(金) 23:50:59.87ID:1IK2X2kO
あー。それぞれの比較はまあそうなのかもしれないんだけど、そもそもどういうtraitがあってどういう時に使うべきなのかを全て把握できてないせいで実際にコード書く時にどれを使うとRustらしいコードになるのかわからなくなるってのがしんどいんだよね
2024/02/23(金) 23:59:41.76ID:hX/YHnPg
>>988
どの分野のどんな話でも基本パターンの学習による慣れ
問題

match std::env::args().XXXXX {
 Some("yes") => ...,
 Some("no") => ...,
 _ => ..., // エラー
}
990デフォルトの名無しさん
垢版 |
2024/02/24(土) 02:12:39.95ID:YQ3M0cmx
2024/02/24(土) 04:00:00.27ID:felFEjYK
「当然こういうのが標準ライブラリにあって然るべきだろう」みたいな感覚ができるから結局は慣れ。
常識的に考えてあるだろうと思ったら nightly だったみたいなこともよく経験するから俺が欲しいようなものはみんな欲しいんだなと思う。
実質的に言語の一部みたいなくらいのやつは嫌でも避けられないから何度もドキュメントを読み返すはめになるし、そのうち自然に使えるようになる。
2024/02/24(土) 12:21:57.67ID:lhpjpr9r
>>987
Derefは演算子でも利用されるがDerefそのものが演算子(や演算子の実装)というわけではない
Type Coercionというのは型変換(Type Conversion)の一種なのでDerefは変換ではないというのもやや言い過ぎ

各型で決められた一つの型にderefされるのは演算子だからという理由ではなくて
Derefはスマートポインタが包んでる値へのアクセスを便利にするために用意されたものだからderef先の型は自然と一つに決まるため(>>733)

&T→TはDerefの役割ではない
993デフォルトの名無しさん
垢版 |
2024/02/24(土) 12:57:43.72ID:Sbx59RJL
AsRefとBorrowは未だにわからんなあ
調べてもHashMapがBorrow要求するならそこだけBorrow使っておけばいいか……で思考停止してる
994デフォルトの名無しさん
垢版 |
2024/02/24(土) 13:58:08.04ID:Q2pRspv0
995デフォルトの名無しさん
垢版 |
2024/02/24(土) 13:58:23.94ID:Q2pRspv0
生め
2024/02/24(土) 13:58:40.99ID:Q2pRspv0
、埋め
2024/02/24(土) 13:58:46.56ID:Q2pRspv0
!埋め
2024/02/24(土) 13:58:52.17ID:Q2pRspv0
?埋め
2024/02/24(土) 13:59:00.55ID:Q2pRspv0
○埋め
2024/02/24(土) 13:59:07.65ID:Q2pRspv0
〜埋め
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 34日 14時間 37分 28秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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