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/
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は初心者/素人 御用達言語だよ。
レスを投稿する


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