X



Rust part23

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2024/02/23(金) 17:37:52.13ID:CheDQupm
公式
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 part22
https://mevius.5ch.net/test/read.cgi/tech/1705760500/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.2ch.net/test/read.cgi/tech/1514107621/
0723デフォルトの名無しさん
垢版 |
2024/04/22(月) 21:24:48.26ID:g+YSHIF5
日本人だから日本語名が付いたファイルを扱う機会に恵まれてるからこういうことに出会える
アメリカ人だったらこういうのに出会わないでコーディングしてリリースしてるだろう

世界中で使ったらパスの問題で落ちるプログラムがガンガン量産されている
0724デフォルトの名無しさん
垢版 |
2024/04/22(月) 23:12:07.98ID:ljq3CdpU
>>722
チュートリアルレベルの基礎を
バッドノウハウwとか
積み重ねでいかないといけないwとか
言ってるから何言ってんのwになる
0725デフォルトの名無しさん
垢版 |
2024/04/22(月) 23:32:38.83ID:cr/ZTax6
>>720
Rustのパニックはどの関数で何をした時に発生するかすべてドキュメントに明記されてるのでパニックはプログラミングした側に問題がある
さらにパニックがソースコードの何行目のどの場所で起きたのかもわかるのですぐにそのバクを調査できる
まずは基礎知識を身につけよう

>>722
std::env::argsのドキュメントにどういう時にパニックが起きるか書いてある
さらに対処方法はargs_osを使えと明記されている
ドキュメントを見よう
0727デフォルトの名無しさん
垢版 |
2024/04/22(月) 23:42:55.88ID:g+YSHIF5
リリースした後の実行時のpanicを有り難がる信者

Rustのライブラリの思想がいまいち馴染みにくいと言うか素人が作るとこうなりますと言う見本
0728デフォルトの名無しさん
垢版 |
2024/04/22(月) 23:57:01.81ID:kZ9sSSe5
>>722
Rustではそんな個別の知識を知らなくてもpanicさせた関数が分かるから
その関数のドキュメントのpanicの項目を見れば明記されてる
他の言語と比べても良い環境
0729デフォルトの名無しさん
垢版 |
2024/04/23(火) 00:03:29.34ID:aheV4X/O
馬鹿と話しててもらちが開かない

世界中で使ったらパスの問題で落ちるプログラムがガンガン量産されているのは事実
お前らそれを一個一個プルリク送ったりしてるのか?
0730デフォルトの名無しさん
垢版 |
2024/04/23(火) 00:13:45.98ID:aheV4X/O
所有権とか導入してバグを静的に弾こうとしてる割にはこういうところではガバガバ
世界中で英語じゃないwindows環境でpanicが起こるコードが蔓延してる

非合理的
0731デフォルトの名無しさん
垢版 |
2024/04/23(火) 00:34:48.42ID:tNw43TTr
そんなことより The Embedded Rust 読み始めたんです。
冒頭からリンカで割り込みベクタマップの取り方やら panic 無効にしての main 関数導入やら、HAL は自分でこさえるんだよね?と言わんばかりの内容。
おおむかしのMCU開発環境みたいで嫌いじゃないけど、arch 対応してないと敷居高いねこれ。
0732デフォルトの名無しさん
垢版 |
2024/04/23(火) 09:44:34.04ID:SlAsUTut
公式チュートリアルすらまともに読めないお馬鹿さんは自分が使う道具を間違えててもそれを言語のせいにしたがる
プラスドライバーを使うべき状況でマイナスドライバーを使って使いにくいじゃねーかこんな道具は非合理的などと言い出す
ヤバすぎね?
0733デフォルトの名無しさん
垢版 |
2024/04/23(火) 11:06:58.83ID:PMnHeW+x
>>725
なんでコンパイル時にエラーにできないんだろう?

Rustのポリシーからすれば安全優先でargs_osだけにしてargsは削除すべきでは?
c++じゃあるまいに、コマンドラインのデータが常に正しいunicodeだと信用するプログラムを書けるとか、セキュリティーホールになりかねんと思うけど。
0737デフォルトの名無しさん
垢版 |
2024/04/23(火) 15:43:54.29ID:3Xc7JqWG
>>733
>なんでコンパイル時にエラーにできないんだろう?
出来るわけないだろw
実行時に与えられる外部入力をコンパイル時にどうやって判定するんだよw
バカすぎる
0738デフォルトの名無しさん
垢版 |
2024/04/23(火) 16:19:44.91ID:1rwyWp7B
しいて言えばargs()を使う方が特殊ケースなのにデフォルトの名前を引き継いだのは設計ミス
もう治る見込みはないからargs_os()を使おうねってだけだけど
0739デフォルトの名無しさん
垢版 |
2024/04/23(火) 16:52:58.90ID:Kbb8det7
一応argsをdeprecatedにして徐々に移行させていくのはできるだろうけど
特に提案もなさそうだし誰も困ってないんじゃないかな
そもそもほとんどのケースでclapとか使うだろうし
0740デフォルトの名無しさん
垢版 |
2024/04/23(火) 17:20:16.94ID:jbFpiEtG
>>733
>>725
>なんでコンパイル時にエラーにできないんだろう?

むしろ何でできると思ってるんだろう。謎
0741デフォルトの名無しさん
垢版 |
2024/04/23(火) 17:22:13.22ID:SM3r9/qB
環境変数もvarとvar_osがあるから慣れろとしか言えない
OS標準が全部utf-8になる未来もありえるし
0742デフォルトの名無しさん
垢版 |
2024/04/23(火) 17:48:20.12ID:x1LuxzDZ
>>741
紛らわしいけどvar/var_osとvars/vars_osは別物だよ
varはinvalid UTF-8でもエラーハンドリング可
varsはpanic

argsは引数にUTF-8以外はダメだよって前提で使える余地がまだあるけど
varsはそんな前提をおける状況はほぼなくてよりたちが悪い
0743デフォルトの名無しさん
垢版 |
2024/04/23(火) 18:06:35.01ID:DF4k8ks3
>>741
>OS標準が全部utf-8になる未来もありえるし
10年前のその未来予想が大外れしてるから今となっては設計ミスとしか言いようがない
もう10年経ったとしても状況は変わらないと思う
0744デフォルトの名無しさん
垢版 |
2024/04/23(火) 19:06:07.68ID:rRGY+2Qg
>>732
公式チュートリアルまともに読めるならC++で良いからな
0745デフォルトの名無しさん
垢版 |
2024/04/23(火) 20:01:34.96ID:+uJAOtCC
よーわからんけど10年ぐらい前はすべてutf16になると考えられてたのでは?

どう考えてもstd::env::argsを非推奨にしろとは思うけどね
欧米人がつくるとこんなことになるんだ

普通は2種類の扱いがある
・実行環境に合わせて自動的に内部での標準形式に変換

・何もしない
何もしないならOSから受け取ったままOSに渡して置けば大体問題はない

第三の愚策がRust
受け取ったままそのままOSに渡してもコケる
Rustは何もしないように見えるけど何かしてるからコケるのでは?
0746デフォルトの名無しさん
垢版 |
2024/04/23(火) 20:52:29.82ID:xiHKhQOf
>>745
間違いだらけだな
世界の標準はUTF8
ウェブももちろんUTF8
RustもUTF8

Rustがこの件でコケることはない
きちんと各関数の仕様が明記されていて常に正確に動作している
0748デフォルトの名無しさん
垢版 |
2024/04/23(火) 21:12:51.81ID:xiHKhQOf
>>747
一般的なパニックは色んな意味合いがあるけど
Rustでのパニックは関数ドキュメントに明記されている想定のことが起きた
ライブラリ関数の作成者はパニックを発生させる時の条件をドキュメントに明記しなければならない
だからそれを利用する各プログラマーにとっても想定内のことのみパニックが起きる
0750デフォルトの名無しさん
垢版 |
2024/04/23(火) 23:41:39.78ID:x1LuxzDZ
>>745
>よーわからんけど10年ぐらい前はすべてutf16になると考えられてたのでは?
30年以上前にUCS-2がWindowsやJavaに採用された時代のことを言ってるのかな?
(UTF-16と違ってUCS-2は固定幅なので今でもまだ使い所はあるけど)

↓これが15年くらい前のUTF-16に対する一般的な認識
https://softwareengineering.stackexchange.com/questions/102205/
0751デフォルトの名無しさん
垢版 |
2024/04/24(水) 00:43:41.33ID:5EZEwmZn
utf-16はUnicode 2.0(1996年7月)のサロゲートペア導入でutf-8に逆転されたな
しばらくはBMPしか使われなかったから耐えてたけど
1990代前半に始動したJavaは運が悪かった
0753デフォルトの名無しさん
垢版 |
2024/04/24(水) 01:23:24.26ID:YBOQY0J9
Rust界隈では狂信者がいてそいつらはまともに反論すら出来ないけど
Rustが正しいRustが正しいと繰り返すばかり
0754デフォルトの名無しさん
垢版 |
2024/04/24(水) 12:36:38.15ID:A+y4lqIx
>>737 >>740
windows環境とかunicode以外が混ざる環境でargをコンパイルエラーにできないのかね。

そもそもargは廃止していい。
0755デフォルトの名無しさん
垢版 |
2024/04/24(水) 12:47:56.41ID:HIQuAly7
すげーどうでもいい話だな
0757デフォルトの名無しさん
垢版 |
2024/04/24(水) 12:58:45.05ID:GRRi3Rgr
>>754
Windowsでも設定すればUTF-8になるしLinuxだってUTF-8以外に自由に変えられるわけだから、そんな判定は不可能
まぁ廃止していいには同意するけども
0758デフォルトの名無しさん
垢版 |
2024/04/24(水) 13:18:14.84ID:meF6WBmz
Windows は Windows の機能として文字コードの管理はしてるが歴史的事情でツギハギのグダグダ。
今の Linux はおおよそ UTF-8 で統一されているけど規約で縛っているだけで、 OS としてはバイナリ単位で素通し。
保証としてはあてにならん。
0759デフォルトの名無しさん
垢版 |
2024/04/24(水) 13:18:30.26ID:HIQuAly7
コンパイルエラーにできないから引数まで廃止するとか原理主義もここまで来てんのか。
0760デフォルトの名無しさん
垢版 |
2024/04/24(水) 14:25:14.78ID:up+AoO7k
>>754
無知にもほどがある!

unicodeとUTF-8が区別できない
Windowsに限らずLinuxでもmacOSでも非UTF-8の引数や環境変数が使われる可能性があるのは同じなんだがそんな常識を知らない
0761デフォルトの名無しさん
垢版 |
2024/04/24(水) 15:25:54.44ID:65hs2nTl
>>760
そんなんだったらなおさらのこと、Rustの安全指向に従ってargs_osだけにすべきで、argsは廃止にすべきだろ。
Rustはメモリ安全しか興味無いんかね。
0762デフォルトの名無しさん
垢版 |
2024/04/24(水) 15:53:48.65ID:gLaneKFw
保証できるものはするに越したことはないけど (充分に実行コストが小さい形では) できんからしゃーない。
0763デフォルトの名無しさん
垢版 |
2024/04/24(水) 16:02:42.64ID:zvblwt+/
どうでもいい話でもめてるな
Rustはすべて提供してドキュメントにそるぞれ明記しているのだから使う側の各自の問題
こちらはUTF8環境でしか使われないのでargs()のみ利用している
0764デフォルトの名無しさん
垢版 |
2024/04/24(水) 16:05:40.76ID:AQu1Dr63
https://github.com/rust-lang/rust/issues/91226#issuecomment-1034188905
関係する議論はこのあたりかな
もともとはargs/varsをパニックさせずに無視するか置換してほしいって要望だったが
無視や置換はセキュリティ上問題になる可能性があるので却下
varsは将来的にdeprecatedにするかもと言っている
なんでargsもdeprecatedにすべきだろって提案すれば通る可能性はあるかもね
0765デフォルトの名無しさん
垢版 |
2024/04/24(水) 16:26:19.27ID:MMJHgfnp
正しく使え論は暴論だな

それが許されるならスマートポインタやGCは出ずみんな今でも生ポインタを使ってる
0767デフォルトの名無しさん
垢版 |
2024/04/24(水) 16:44:59.20ID:MMJHgfnp
常に自動変換したほうが安全だけどな
開発者が特別コードを書く必要もない
0768デフォルトの名無しさん
垢版 |
2024/04/24(水) 17:05:56.77ID:MMdiZvh6
Rustはファイル名も自動変換なんかしていないように
変換するかどうかは各自の自由裁量であるところが非常に良い点だよ
自分の好みと合わないからといって批判している人たちは頭がおかしいので相手にしても無駄なのだろうけど
0770デフォルトの名無しさん
垢版 |
2024/04/24(水) 17:21:01.52ID:MMJHgfnp
ファイルの引数だけ標準では何もしない
普通のキーボード入力などでは変換している
0772デフォルトの名無しさん
垢版 |
2024/04/24(水) 18:26:14.33ID:AQu1Dr63
>>768
自動変換は正直意味不明だが(変換元の文字コードが判定不能なのに何を変換するのか?)
argsは今RFC出したらResultにしろって突っ込まれると思うし
1.0であまり深く考えずに入れちゃった気はするよ
0773デフォルトの名無しさん
垢版 |
2024/04/24(水) 18:50:02.66ID:5HDpMmrb
Resultとかのハンドリングが面倒な人向けの簡便方法として用意されてるのでそれはないと思う

argsじゃなくてargs_utf8onlyとか名前をダサくして
逆にargs_osを元のargsに戻しとけば
リファレンスをよく読まない人たちがつまづく可能性を下げられる
0774デフォルトの名無しさん
垢版 |
2024/04/24(水) 19:00:18.55ID:65hs2nTl
こういうのを見ると、RustのデザイナーはRustに求められているのがなんなのか理解できていないと思うわな。

Rustは雇われコーダー用Safe Rustのニーズがほとんどで、Unsafe Rustとかのニーズは無いと思うがね。
0776デフォルトの名無しさん
垢版 |
2024/04/24(水) 19:14:39.18ID:9A8KMAyG
自動変換とかそんなアホなこと言ってるのはあんただけやで
そんなものは無いし必要ない
0778デフォルトの名無しさん
垢版 |
2024/04/24(水) 19:45:20.62ID:AQu1Dr63
OsStringはOSから渡されたバイト列をそのまま格納するだけで
EUC-JP環境ならEUC-JPバイト列がそのまま入るし何も変換されたりしないが…
0779デフォルトの名無しさん
垢版 |
2024/04/24(水) 19:49:39.48ID:MMJHgfnp
想像力が欠如しているか頭がおかしいか指示待ち人間だからそういう幼稚なレスになる

結局内部で使う場合は簡単にutf8に変換してる
なにからutf8に変化するか指示も必要がない
ただのボイラープレート
0780デフォルトの名無しさん
垢版 |
2024/04/24(水) 19:58:53.67ID:ArOBrbBE
>>777
自動変換なんてものはない
むしろ自動変換を避けるために用意されているのがOsString
もちろん自動変換は行われない
0781デフォルトの名無しさん
垢版 |
2024/04/24(水) 20:02:00.63ID:MMJHgfnp
人間じゃなくて壊れたロボットに話しているようだな
いくつになろうとこんなダメな人間になってはいけないな
0782デフォルトの名無しさん
垢版 |
2024/04/24(水) 20:16:20.94ID:il94IOIF
ぼきのかんがえたさいきょうのげんごにはstring<encoding>とchar<encoding>があって
どんなエンコーディングの文字列でも統一的に扱うことができましゅ
Rustもまだまだでしゅね
0783デフォルトの名無しさん
垢版 |
2024/04/24(水) 20:44:42.25ID:xJ62MSkB
ほとんどの環境がWebも含めてUTF8に統一となったからRustのstr/String内部表現がUTF8であるのは合理的といえる
もちろんWebでもローカルファイルでも古いものは様々な文字コードが使われているため必要なら各々で対処する必要がある
0784デフォルトの名無しさん
垢版 |
2024/04/24(水) 21:30:38.14ID:nN1vQ+Ae
文字コードをUTF-8とか特定のものに決め打ちにしないという点ではRubyが一番先進的だったが、あれはやりすぎで以降の言語には採用されなかったな。
0785デフォルトの名無しさん
垢版 |
2024/04/24(水) 21:49:41.83ID:tlaf0qkO
めちゃくちゃ間違ってるのになぜ上から目線で自信満々にレスするんだろう?
複オジは昔の自分を諭してる気分じゃないか?
0787デフォルトの名無しさん
垢版 |
2024/04/25(木) 01:24:12.71ID:fpMjozoS
>>0774
お前の着眼点は凄えよ!感動した。
その通り、Rustは初心者/素人 御用達言語だよ。
0790デフォルトの名無しさん
垢版 |
2024/04/27(土) 21:28:13.67ID:+PotGQRe
crates.io が死んだときはどうすれば良い?
0793デフォルトの名無しさん
垢版 |
2024/04/29(月) 14:17:37.62ID:wZNa4EA4
5chが荒らされてる時はどうすれば良い?
0794デフォルトの名無しさん
垢版 |
2024/04/29(月) 16:10:30.59ID:E9KMHG2x
取り敢えずアゲとけばいいんじゃね?
0796デフォルトの名無しさん
垢版 |
2024/04/30(火) 03:09:09.37ID:LM/x1iE2
落ち着いてpanicしよう
0801デフォルトの名無しさん
垢版 |
2024/05/02(木) 20:59:19.04ID:AhHSwsoc
Rustで辞書型はHashMap
複数の型を格納したかったらenumかdyn Trait
TraitをAnyにするならdowncastして使う
実際には共通に処理したい目的があるはずなのでそのTraitを用意すればdowncastしなくて済む
0802デフォルトの名無しさん
垢版 |
2024/05/03(金) 11:35:32.62ID:nLK8l4in
pythonみたいにだからclassがわりなのかも

p["name"]="yamada taro";
p["age"]=25;
みたいなのかな
いずれにしてもC++じゃないので
0803デフォルトの名無しさん
垢版 |
2024/05/03(金) 23:02:14.16ID:NBKkZegt
静的型付けの有用性が大きく上回るから
そのケースならstructにするだろうし
色んな型を横断的に扱いたいケースならtraitかな
0805デフォルトの名無しさん
垢版 |
2024/05/04(土) 09:38:11.89ID:dspjTuTH
GUI付きのポータブルなデスクトップアプリを作るとなるとどのライブラリがいいんだろ?
0807デフォルトの名無しさん
垢版 |
2024/05/04(土) 12:04:17.00ID:WHGnbjEl
UIはもうネイティブにこだわらなくてもいいんじゃないかな
昔からwebでしかUI提供してないソフトはゴロゴロある
0808デフォルトの名無しさん
垢版 |
2024/05/04(土) 15:02:31.51ID:UtcYFhat
用途次第
WebベースのUIでは反応速度が遅すぎる場合もあるしサイズが許容できない場合もある
0809デフォルトの名無しさん
垢版 |
2024/05/04(土) 15:44:19.83ID:oqQ8V/k0
Tauri は各環境の WebView を使うからアプリケーションの側では管理しなくてよくなり楽……
みたいな言説もあるが、 WebView の種類・バージョンを固定できないから変化に追従する必要が生じる。
そもそもウェブの世界は変遷が激しい。
Living Standard ってなんやねん。 普通の産業の感覚では信じられんようなことをしやがる。
元からウェブ系のスキルセットを持っている人が開発してメンテナンスもするってのなら
Tauri は良い選択肢だと思うが、それなりにデメリットもあるよ。

ただ、多言語 (というか Unicode) に隅々まで対応しているようなフレームワークってことになると
ウェブ系の基盤がめちゃくちゃ整備されているのでそこらへんは唯一無二だわ。
0810デフォルトの名無しさん
垢版 |
2024/05/04(土) 16:01:23.73ID:WHGnbjEl
即応性が必要な人は特殊な学習を手間暇というか単純に時間をかけてやって
そうでない場合は普通にhtmlで
0811デフォルトの名無しさん
垢版 |
2024/05/04(土) 16:07:02.02ID:lP1zz7vp
実行時のメモリ使用量の違いもかなり大きいから最初に考慮しといた方がいい
常駐の軽いアプリを作りたい場合なんかは特に
0812デフォルトの名無しさん
垢版 |
2024/05/04(土) 16:07:49.70ID:oqQ8V/k0
UI を記述するためのものとしては html は「普通」じゃないってことをウェブ系の人は思い出して欲しい。
元はドキュメント記述用だったのに html5 から大幅に路線変更してアプリケーション基盤として再編したけどどう見たって無茶苦茶だ。
ウェブの人が使う分にはこれでいいことは否定しないけど、 UI 記述の「普通」ではない。
0813デフォルトの名無しさん
垢版 |
2024/05/04(土) 16:17:08.35ID:5ROxz5B4
UI記述は宣言的なものが主流になりつつあってhtml的なものが「普通」になってきてるんだよ

MFCやCocoaやGTK的なものが今では逆に「普通」ではない
0815デフォルトの名無しさん
垢版 |
2024/05/04(土) 16:22:16.16ID:oqQ8V/k0
>>813
宣言的がどうこうとかいう問題ではなく html が「普通」ではないと述べてる。
これが良いとか悪いとか言ってるわけではないよ。
まず第一に選ぶべき「普通」だとする論を否定してる。
0817デフォルトの名無しさん
垢版 |
2024/05/04(土) 18:05:18.74ID:uscJJ1KS
何気にslintと書いてみたが紹介動画見る限りvs codeにアドオン入れてライブプレビューしながらuiの構築がサクサク行えるのは割といいな…

tauriは環境構築する段階でnodeのバージョンやら依存ライブラリの不備でエラーがでてしまい結構時間が掛かってしまった
0818デフォルトの名無しさん
垢版 |
2024/05/04(土) 18:12:14.00ID:WHGnbjEl
デスクトップアプリのここにグラフ出してくださいって言われて
対応できる環境は少ない
0819デフォルトの名無しさん
垢版 |
2024/05/04(土) 19:49:33.93ID:kEH6RwVz
他にいい表現方法があるなら自分で作って使ってりゃいいじゃん
0822デフォルトの名無しさん
垢版 |
2024/05/05(日) 10:17:39.98ID:k5d9I+SK
>>821
Elm Architectureの設計パターンを覚える必要があるけどなかなかいいですね
■ このスレッドは過去ログ倉庫に格納されています

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