公式
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 part16
探検
Rust part17
■ このスレッドは過去ログ倉庫に格納されています
2022/10/06(木) 22:43:13.96ID:Re0G7B20
185デフォルトの名無しさん
2022/10/21(金) 21:26:14.55ID:gnp0h5uN Rust入門という感じではないな
Rustを使ったWeb入門という感じ
Rustを使ったWeb入門という感じ
186デフォルトの名無しさん
2022/10/21(金) 22:25:35.46ID:YCtBy6Lb >>185
Web+DB Press読者は簡単なWebアプリ開発はいろんな言語で経験済みで理解しやすいだろうからチュートリアルの対象に選んだだけでは?
Web+DB Press読者は簡単なWebアプリ開発はいろんな言語で経験済みで理解しやすいだろうからチュートリアルの対象に選んだだけでは?
187デフォルトの名無しさん
2022/10/22(土) 13:19:56.51ID:OES5lhv+ >>186
普段読まないけどRustなので買ってみた
なかなかわかりやすかった
基本文法の解説が明らかに足りないけど
サンプルを理解するだけならこの程度で良いのか
面倒な部分が表に出ないようにうまくサンプルを調整してるし
普段読まないけどRustなので買ってみた
なかなかわかりやすかった
基本文法の解説が明らかに足りないけど
サンプルを理解するだけならこの程度で良いのか
面倒な部分が表に出ないようにうまくサンプルを調整してるし
188デフォルトの名無しさん
2022/10/22(土) 21:03:49.60ID:Vp6sRBIs 借用がどうGCに関係するのかよくわからない
うまく説明しているサイトはないですか?
うまく説明しているサイトはないですか?
189デフォルトの名無しさん
2022/10/22(土) 21:38:11.55ID:OES5lhv+ まずスタックとヒープを理解せよ
これは口を酸っぱくして言ってる
でないとRustは理解できない
これは口を酸っぱくして言ってる
でないとRustは理解できない
190デフォルトの名無しさん
2022/10/22(土) 21:39:04.07ID:PO/EA+oY とりあえずThe Bookの4章
https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html
Rustをそれなりに習得しようと思うなら
The Bookとオライリー本を読むのが一番近道
https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html
Rustをそれなりに習得しようと思うなら
The Bookとオライリー本を読むのが一番近道
191デフォルトの名無しさん
2022/10/22(土) 23:56:07.88ID:OES5lhv+ 両方とも初心者には辛いよなあ
わかりやすい入門書が待たれる
わかりやすい入門書が待たれる
192デフォルトの名無しさん
2022/10/23(日) 00:22:18.48ID:LnniM1YV 借用するときにデータをスタックに積む
スコープを抜けるときに一気にpopするので
GCがいらない、つまり、早い
heapだとGCのときにデータの移動が必要になる
ので遅い
この理解であってる?
スコープを抜けるときに一気にpopするので
GCがいらない、つまり、早い
heapだとGCのときにデータの移動が必要になる
ので遅い
この理解であってる?
193デフォルトの名無しさん
2022/10/23(日) 00:29:31.67ID:jNoMv4k0 ポインタとか参照とか他の言語で扱ったことない?
194デフォルトの名無しさん
2022/10/23(日) 00:44:57.32ID:h/oZflgJ heapが遅いの要因は、メモリの割り当て解放処理があるから処理量が多いとか、
割り当てた領域がバラバラになることでキャッシュ効率がさがることとかかと
割り当てた領域がバラバラになることでキャッシュ効率がさがることとかかと
195デフォルトの名無しさん
2022/10/23(日) 13:47:22.46ID:/F23RQvw ページング処理みたいなのが、ヒープだと2重に行われるんじゃないの?
196デフォルトの名無しさん
2022/10/23(日) 14:14:22.62ID:ioVOctq2 >>192
Rustでのその辺のメモリの動きはオライリー本に詳しく書いてあった気がするから読むべし
Rustでのその辺のメモリの動きはオライリー本に詳しく書いてあった気がするから読むべし
198デフォルトの名無しさん
2022/10/23(日) 18:33:19.09ID:QEVtmAwk >>192
そんなに物事が単純なら良かったのに...
”スコープを抜けるときにGCがいらない、つまり、早い”、これは間違いでもある。インライン展開されるような高階関数なら良いが
ループ中でアロケーションしてしまうような記述をすると、その度に確保・解放されるので非効率になりかねないし、借用による
メモリーの管理ではないが、参照カウントを使用するSwiftでは、ループでボトルネックになることはある。
このためRustでは高階関数で書く事が一般的に(分かり易く)良い事とされる。あとスタックでどの言語も大体はスコープ外で
消えるのでヒープとスタックの区別は付けましょう
独立したGCスレッドが動く言語だと、スコープ外れでGCするとは限らないので、速い場合がある。一方で、高負荷な環境では
GCスレッドがありで、回収などインターラプトが入るのでRustが有利になる(=※こちらのほうがRustが重要視される理由)
いわゆるSTOP THE WORLD(DIO様風)だ。ただ、これが無ければ良いということではなく、循環参照などを作らなければ
問題ないという話で循環参照を作ってしまうのであれば、独立したGCスレッドは便利でもある
”GCのときにデータの移動が必要”になるかどうかは、GCのアルゴリズム次第であり、厳密には”データの移動が必要”になるのは
メモリーのフラグメント解消つまりコンパクション処理によるところが大きい。これは、近代的なOSでは似たような事を行っていて
これ自体が速度に大幅に影響を及ぼすとは言い難い
そんなに物事が単純なら良かったのに...
”スコープを抜けるときにGCがいらない、つまり、早い”、これは間違いでもある。インライン展開されるような高階関数なら良いが
ループ中でアロケーションしてしまうような記述をすると、その度に確保・解放されるので非効率になりかねないし、借用による
メモリーの管理ではないが、参照カウントを使用するSwiftでは、ループでボトルネックになることはある。
このためRustでは高階関数で書く事が一般的に(分かり易く)良い事とされる。あとスタックでどの言語も大体はスコープ外で
消えるのでヒープとスタックの区別は付けましょう
独立したGCスレッドが動く言語だと、スコープ外れでGCするとは限らないので、速い場合がある。一方で、高負荷な環境では
GCスレッドがありで、回収などインターラプトが入るのでRustが有利になる(=※こちらのほうがRustが重要視される理由)
いわゆるSTOP THE WORLD(DIO様風)だ。ただ、これが無ければ良いということではなく、循環参照などを作らなければ
問題ないという話で循環参照を作ってしまうのであれば、独立したGCスレッドは便利でもある
”GCのときにデータの移動が必要”になるかどうかは、GCのアルゴリズム次第であり、厳密には”データの移動が必要”になるのは
メモリーのフラグメント解消つまりコンパクション処理によるところが大きい。これは、近代的なOSでは似たような事を行っていて
これ自体が速度に大幅に影響を及ぼすとは言い難い
199デフォルトの名無しさん
2022/10/23(日) 19:03:12.25ID:NZM9O6ur200デフォルトの名無しさん
2022/10/23(日) 20:51:00.62ID:h/oZflgJ 一体何と何を比較しているのだ
201デフォルトの名無しさん
2022/10/23(日) 22:09:39.72ID:HOBBKeJ+ なんかすごい早口で支離滅裂なこと言ってるけど
頭を整理した方が良いよ
頭を整理した方が良いよ
202デフォルトの名無しさん
2022/10/24(月) 16:50:56.92ID:SgELnO58 スコープを抜けるときにGCがいらない、つまり、早い
これが間違っている理由を教えてください
これが間違っている理由を教えてください
203はちみつ餃子 ◆8X2XSCHEME
2022/10/24(月) 18:09:05.87ID:VKX4Fsrh ヒープメモリの管理はそれなりに重い処理だというのが論旨のように見える。
GC を使った場合のように不要なオブジェクトの判別をしていくコストは Rust では生じないが
それを除けば空いてる箇所と使用中の箇所を上手いこと管理する実行時コストは
GC (に付随するメモリ割り当て) でやってるのとたぶんそんなに差はないんじゃね。
GC を使った場合のように不要なオブジェクトの判別をしていくコストは Rust では生じないが
それを除けば空いてる箇所と使用中の箇所を上手いこと管理する実行時コストは
GC (に付随するメモリ割り当て) でやってるのとたぶんそんなに差はないんじゃね。
204デフォルトの名無しさん
2022/10/24(月) 18:49:41.29ID:8+UVFZyO205デフォルトの名無しさん
2022/10/24(月) 19:05:34.14ID:Off49nvS 文法で制約したら、書き手もコンパイラも
変数の寿命を厳密に特定することができて便利だろって事で、
どこにどう確保すると速いとか、そういう話とは別では
変数の寿命を厳密に特定することができて便利だろって事で、
どこにどう確保すると速いとか、そういう話とは別では
206デフォルトの名無しさん
2022/10/24(月) 19:14:17.25ID:FdEAHzhz GCがないので速い←わかる
スコープを抜けたらpopするだけなので速い←わかる
スコープを抜けるときにGCがいらない←スコープとGCは何の関係もないよね
スコープを抜けたらpopするだけなので速い←わかる
スコープを抜けるときにGCがいらない←スコープとGCは何の関係もないよね
207デフォルトの名無しさん
2022/10/24(月) 20:07:47.96ID:rCA25jH/ まあGCは常に動く可能性があるからな
逆に全く動かない可能性もある
そこはGCのアルゴリズムによりけり
逆に全く動かない可能性もある
そこはGCのアルゴリズムによりけり
208デフォルトの名無しさん
2022/10/24(月) 21:01:10.53ID:SgELnO58 スタックを使っているから
pop すればそのままメモリが解放されるという意味では?
pop すればそのままメモリが解放されるという意味では?
209デフォルトの名無しさん
2022/10/24(月) 21:39:23.30ID:UxIqfb1a 何と何を比べて何が速いと思ってるのか整理しなよ
話はそれからだ
話はそれからだ
210デフォルトの名無しさん
2022/10/24(月) 22:49:30.31ID:c7GaYtEs >>208
動的データ全部スタックに積むのか。すげーな。
動的データ全部スタックに積むのか。すげーな。
211デフォルトの名無しさん
2022/10/24(月) 22:54:45.01ID:9jOSWWIs そんなことよりコンパイルの遅さマジでテコ入れろYO、非力なCeleronでactix-webのコンパイルしたら10分とかふざけてんのか?
212デフォルトの名無しさん
2022/10/24(月) 23:05:21.00ID:XsMeW9pb コンセプトがコンパイル遅くしても賢くするだから無理
213デフォルトの名無しさん
2022/10/24(月) 23:18:23.86ID:b0depGja 依存ライブラリまで全部自前ビルドさせられてるわけだからな
コンパイル済みcrateの配布とかやってくれればなんとかなりそうではあるが
コンパイル済みcrateの配布とかやってくれればなんとかなりそうではあるが
214デフォルトの名無しさん
2022/10/24(月) 23:42:51.24ID:cJUnO/Lg コンパイル高速化はユーザー側でもいろいろ工夫の余地はあるが
コア数多いマシンを使うのがいちばん効果がある
コア数多いマシンを使うのがいちばん効果がある
215デフォルトの名無しさん
2022/10/25(火) 07:14:07.04ID:0Y9XP165 分散コンパイルか、差分コンパイルか、常にバックエンドでコンパイルか
216デフォルトの名無しさん
2022/10/25(火) 08:16:49.84ID:A5TY3R0Y >>211
流石にもっと良いマシン買えでFA
流石にもっと良いマシン買えでFA
217デフォルトの名無しさん
2022/10/25(火) 08:49:49.17ID:1jHrAe9o でもRustって錆だよね
218デフォルトの名無しさん
2022/10/25(火) 11:17:17.09ID:5EjxpvPU ライブラリ類も複雑化・大型化の一途をたどっているご時世だし
Androidをビルド出来ないようなマシンは開発用としては時代遅れじゃね
Androidをビルド出来ないようなマシンは開発用としては時代遅れじゃね
219デフォルトの名無しさん
2022/10/25(火) 16:49:21.94ID:pUVcngq8 環境負荷を下げるためにもTier1プラットフォームはビルド済みか半分ビルド済みを配布できるようにすべき
220デフォルトの名無しさん
2022/10/25(火) 18:21:31.05ID:RZIJ148t structのフィールドにasyncのクロージャ持たせるの面倒だな
221デフォルトの名無しさん
2022/10/26(水) 00:21:17.27ID:+/Fbza6R >>220
Pin<Box<dyn Future<Output = T>>> ではだめ?
Pin<Box<dyn Future<Output = T>>> ではだめ?
222デフォルトの名無しさん
2022/10/26(水) 01:59:13.05ID:TlW6c1+d223デフォルトの名無しさん
2022/10/26(水) 03:12:53.76ID:J4zGWIbj >>210
全部とは言っていないローカル変数だけだ
全部とは言っていないローカル変数だけだ
224デフォルトの名無しさん
2022/10/26(水) 07:48:04.37ID:i0Q+rT9S >>223
GoだってJavaだってローカル変数はスタックを利用する。
GoだってJavaだってローカル変数はスタックを利用する。
225デフォルトの名無しさん
2022/10/26(水) 08:03:17.30ID:xzd5i3vP226デフォルトの名無しさん
2022/10/26(水) 10:03:48.91ID:8iR+QuRY んなこと言ったらRustだってBox使うだけでヒープ使われるだろ
227デフォルトの名無しさん
2022/10/26(水) 10:28:26.80ID:poB2zSjv ピープアレルギーでも湧いたのか?
228デフォルトの名無しさん
2022/10/26(水) 10:55:30.37ID:xzd5i3vP229デフォルトの名無しさん
2022/10/26(水) 12:39:08.43ID:61QnplYU ヒープで思いついたけどtest::benchってなんで使用したメモリ量出てこないの?Rustだってアロケーター自作できるなら出せなくないと思うんだが
230デフォルトの名無しさん
2022/10/26(水) 13:39:05.90ID:29TlHyS0 c言語なんかも int a[n] とかはスタックから取ってきてる。昔はmallocしてたが。
とはいえlinuxのスタック領域はヒープとそんな変わらん。
とはいえlinuxのスタック領域はヒープとそんな変わらん。
231デフォルトの名無しさん
2022/10/26(水) 13:49:21.71ID:OrdcPqRc 環境によるが、Rust のスレッドごとのスタックサイズのデフォルトが2MBとかで
バカでかいローカル変数や引数を使おうとすると、
簡単に実行時エラー/スタックオーバーフローを実現できるという
ちなみに、String はヒープを使う
バカでかいローカル変数や引数を使おうとすると、
簡単に実行時エラー/スタックオーバーフローを実現できるという
ちなみに、String はヒープを使う
232デフォルトの名無しさん
2022/10/26(水) 14:58:21.99ID:XcmPInF1233デフォルトの名無しさん
2022/10/26(水) 16:10:38.33ID:+/Fbza6R234デフォルトの名無しさん
2022/10/26(水) 18:56:12.77ID:m/VlzFSs C 以外の言語は、すべて浅いコピー・shallow copy でしょ。
実体はコピーされずに、参照だけがコピーされる
たぶん、ローカル変数も参照だけがスタックにあって、
実体はヒープにあるのでしょ
実体はコピーされずに、参照だけがコピーされる
たぶん、ローカル変数も参照だけがスタックにあって、
実体はヒープにあるのでしょ
235デフォルトの名無しさん
2022/10/26(水) 19:32:11.84ID:/Jbhrlo+ そもそもスクリプト言語はマシンスタック使ってないから
C/C++/Rust/Goみたいなコンパイル言語とスクリプト言語(PythonとかRuby)とではメモリモデルが全く違う
JVMのJITはVMスタックをマシンスタックに引き継ぐって処理をやってるけど
C/C++/Rust/Goみたいなコンパイル言語とスクリプト言語(PythonとかRuby)とではメモリモデルが全く違う
JVMのJITはVMスタックをマシンスタックに引き継ぐって処理をやってるけど
236デフォルトの名無しさん
2022/10/26(水) 19:35:12.65ID:+/Fbza6R >>234
Cにdeep copyの概念ある?
Cにdeep copyの概念ある?
237はちみつ餃子 ◆8X2XSCHEME
2022/10/26(水) 19:39:57.27ID:UI6BPQPg238デフォルトの名無しさん
2022/10/26(水) 19:41:30.91ID:WAf5RIwU Box<T>って出現頻度の割に表記が長いよな
boxキーワードに変える案はどうなったんだ?
boxキーワードに変える案はどうなったんだ?
239デフォルトの名無しさん
2022/10/26(水) 20:19:12.15ID:SEIcgM+j >>230
まーた思いつきで適当なこと言ってるの?
まーた思いつきで適当なこと言ってるの?
240デフォルトの名無しさん
2022/10/26(水) 21:39:27.98ID:xibmu52f シャローコピーもディープコピーもプログラマに意識させるような言語の方がいいと思うけどなあ
241デフォルトの名無しさん
2022/10/27(木) 17:59:59.22ID:36nf4K/2 C言語は低レベルすぎるからshallow copyやdeep copyを意識する必要がそもそもないしな
ポインタをそのまま複製するのがshallow copyでポインタをデリファレンスしてからその値を複製するのがdeep copyってだけやし
ポインタをそのまま複製するのがshallow copyでポインタをデリファレンスしてからその値を複製するのがdeep copyってだけやし
242デフォルトの名無しさん
2022/10/27(木) 18:19:49.08ID:mzG41rMz cだってポインタがネストされてたら順番に見てかないといけないのは他の言語と同じでしょ。
ネストを考慮しなくて良いならjavaだってcloneで一発コピーできる
ネストを考慮しなくて良いならjavaだってcloneで一発コピーできる
243デフォルトの名無しさん
2022/10/27(木) 22:00:27.64ID:rMi5UTbc >>241
> C言語は低レベルすぎるからshallow copyやdeep copyを意識する必要がそもそもないしな
むしろ意識しまくりだろ
shallow copyとかdeep Copyとかのおしゃれな名前では呼んでないけど
> C言語は低レベルすぎるからshallow copyやdeep copyを意識する必要がそもそもないしな
むしろ意識しまくりだろ
shallow copyとかdeep Copyとかのおしゃれな名前では呼んでないけど
244デフォルトの名無しさん
2022/10/27(木) 22:11:49.94ID:olmwGZ8d 複製おじさんディープコピー知らなかったもんねw
245デフォルトの名無しさん
2022/10/27(木) 22:27:03.43ID:DBkkmtck あえていうならCにおいては構造体のメンバをそのまま代入するのがshallow copy
構造体のメンバのポインタの領域を新しく領域を確保してコピー元の構造体を再帰的にmemcpyするのがdeep cooy
構造体のメンバのポインタの領域を新しく領域を確保してコピー元の構造体を再帰的にmemcpyするのがdeep cooy
246デフォルトの名無しさん
2022/10/27(木) 23:13:57.69ID:qcIge2ki Cではというが大多数の言語がそうじゃね
247デフォルトの名無しさん
2022/10/28(金) 00:02:58.28ID:Rl5QKwW8 deep copy は、ネストするから難しい
Ruby などは参照のリンクを断つために、
一旦、JSON などの文字列にしてから、オブジェクトを再構築したりする
Marshal もあるけど、色々な条件がつく。
IO, Proc, 特異メソッドが使えないとか
Ruby などは参照のリンクを断つために、
一旦、JSON などの文字列にしてから、オブジェクトを再構築したりする
Marshal もあるけど、色々な条件がつく。
IO, Proc, 特異メソッドが使えないとか
248デフォルトの名無しさん
2022/10/28(金) 01:13:37.77ID:jXOvR4PJ なんか話の脈絡も流れもなく各人が単語に反応して書きたいこと垂れ流すだけのスレと化してんな
249デフォルトの名無しさん
2022/10/28(金) 03:43:44.96ID:01u53tKZ 高階関数はGCの性能に影響を及ぼすの?
250デフォルトの名無しさん
2022/10/28(金) 09:27:53.24ID:jXOvR4PJ Webpackの後継となる新バンドルツール「Turbopack」が登場。Rust製のネイティブアプリケーションでWebpackの700倍高速に。Next.js Conf 2022 - Publickey
https://www.publickey1.jp/blog/22/webpackturbopackrustwebpack700nextjs_conf_2022.html
https://www.publickey1.jp/blog/22/webpackturbopackrustwebpack700nextjs_conf_2022.html
251デフォルトの名無しさん
2022/10/28(金) 16:15:00.57ID:AMrJHSke JavaScriptっていつまでバンドルとかやるん?
252デフォルトの名無しさん
2022/10/28(金) 16:24:46.58ID:muqJ433+ いっそコンパイルしたら
253デフォルトの名無しさん
2022/10/28(金) 16:28:04.57ID:AMrJHSke wasmでそれやろうとしてるけど
wasmランタイムよりJavaScriptランタイムの方がまだ速いというトホホな状態
wasmランタイムよりJavaScriptランタイムの方がまだ速いというトホホな状態
254デフォルトの名無しさん
2022/10/28(金) 19:59:50.54ID:eNUtjibx じゃあasmjsでよくね
255デフォルトの名無しさん
2022/10/30(日) 11:39:14.94ID:zV+ownbZ 何いってんだ
JavaScriptはRustの大口顧客だぞ
バカにするなんてとんでもない
JavaScriptの市場が大きいほどRustが儲かる仕組みなんだ
JavaScriptはRustの大口顧客だぞ
バカにするなんてとんでもない
JavaScriptの市場が大きいほどRustが儲かる仕組みなんだ
256デフォルトの名無しさん
2022/10/30(日) 13:52:59.67ID:Ffhte1rz moziraとgoogle, Microsoftと主要ブラウザメーカーが推進してるからな
257デフォルトの名無しさん
2022/10/30(日) 19:41:21.29ID:TG2fSMWC なんでvecの&mutに*が不必要なのか、いまいち理解してなかったけど
fn calc(n: &mut Vec<usize>) {
(*n).push(1);
}
こういうことかー。そういうことだったのかー
fn calc(n: &mut Vec<usize>) {
(*n).push(1);
}
こういうことかー。そういうことだったのかー
258デフォルトの名無しさん
2022/10/30(日) 23:24:15.56ID:tkb7REiJ struct User {
name : String,
age : u32,
}
fn main() {
let mut user = User {
name : "sato".to_string(),
age : 30,
};
user.age = 40;
user.name = "aaaa".to_string();
println!("{}{}", user.name, user.age);
}
"sato".to_string()で生成したStringは
user.name = "aaaa".to_string()後はどうなるの?
mainの}抜ける=プログラム終了時ようやく解放?
name : String,
age : u32,
}
fn main() {
let mut user = User {
name : "sato".to_string(),
age : 30,
};
user.age = 40;
user.name = "aaaa".to_string();
println!("{}{}", user.name, user.age);
}
"sato".to_string()で生成したStringは
user.name = "aaaa".to_string()後はどうなるの?
mainの}抜ける=プログラム終了時ようやく解放?
259デフォルトの名無しさん
2022/10/30(日) 23:41:49.13ID:fG4j0a7a Dropを自分で実装した型で試せばわかる
260デフォルトの名無しさん
2022/10/31(月) 19:06:46.94ID:DHbQvQ7c 相変わらずLinusに怒られまくってるね
261デフォルトの名無しさん
2022/11/01(火) 06:39:05.97ID:y5vMQo4Y rust導入してもディレクトリ構造が汚くなるだけなのにどうして導入したんだろうね
正直撤回して欲しいわ
正直撤回して欲しいわ
262デフォルトの名無しさん
2022/11/01(火) 07:47:38.45ID:6ZBnCRFC ディレクトリ構造なんかより優先すべきことがあるからだろ
rust使う意味を何も分かってないな
rust使う意味を何も分かってないな
263デフォルトの名無しさん
2022/11/01(火) 14:04:14.12ID:w6yg6Ajb もうlinusがカーネル用にsafeな言語作った方がいいんじゃないの
既成言語じゃ既存の処理系と整合性をとらないといけないから
いろいろな不整合が生じる
既成言語じゃ既存の処理系と整合性をとらないといけないから
いろいろな不整合が生じる
264はちみつ餃子 ◆8X2XSCHEME
2022/11/01(火) 14:12:23.10ID:XoXOtAeK エコシステムの充実はユーザ規模によるところがあるから
たとえ言語の設計としてベストマッチでも特化しすぎると
(使い手が増えなくて) 雑多なツールやライブラリが出揃い難いということもありうる。
Linux くらいの規模なら専用言語を作っても割に合ったりするかな?
たとえ言語の設計としてベストマッチでも特化しすぎると
(使い手が増えなくて) 雑多なツールやライブラリが出揃い難いということもありうる。
Linux くらいの規模なら専用言語を作っても割に合ったりするかな?
265デフォルトの名無しさん
2022/11/01(火) 14:25:52.66ID:smDWdngC linusがなんか言ったの?
ググってもlinux 6.1にrustが取り込まれた話しか見つけられなかった
ググってもlinux 6.1にrustが取り込まれた話しか見つけられなかった
266デフォルトの名無しさん
2022/11/01(火) 14:50:17.04ID:FsVxrWah267デフォルトの名無しさん
2022/11/01(火) 14:58:39.21ID:O+5UiM+O >>263
linusはgcc拡張のCが最高だと思ってる人だよ
linusはgcc拡張のCが最高だと思ってる人だよ
268デフォルトの名無しさん
2022/11/01(火) 18:29:34.49ID:cxS6KzKc >>260
どれ?
どれ?
269デフォルトの名無しさん
2022/11/02(水) 15:56:44.98ID:ohjjd8k9 linuxもデフォルトcというよりもかなりカーネル用の拡張してるからrustもそうすればええわってのが
linusの主張でしょ。
linusの主張でしょ。
270デフォルトの名無しさん
2022/11/02(水) 16:18:07.00ID:qqWWqhkC 一応clangでもlinuxカーネルコンパイルできるようになっているということは、
LLVMに必要な機能はそろっているということだろうから、
rustcからそれらの機能を呼び出せるようにできれば良いのかね
LLVMに必要な機能はそろっているということだろうから、
rustcからそれらの機能を呼び出せるようにできれば良いのかね
271デフォルトの名無しさん
2022/11/02(水) 16:35:45.00ID:F11hp17c リーナスゴシップとかどうでもいいスレチネタを続けるなよ
272デフォルトの名無しさん
2022/11/03(木) 02:16:08.55ID:atTBpfYp しょーもないシンタックスの話より有意義だけどな。
273デフォルトの名無しさん
2022/11/03(木) 05:38:58.72ID:CtTK5dM6 1要素タプルの書き方Pythonと同じなんだね
パターンマッチで参照外しと絡むとややこしいなぁ
// 要素1のタプルはカンマ必要
let (mut a, ) = (1, );
a = 100;
println!("{}", a); //=> 100
// 要素1のタプルはカンマ必要
let &(mut a, ) = &(1, );
a = 100;
println!("{}", a); //=> 100
// (式)と区別つかないからとか
let &(mut a) = &(1);
a = 100;
println!("{}", a); //=> 100
// error[E0308]: mismatched types
let &mut a = &1; // ←ココ
a = 100;
println!("{}", a);
// こっちはok
let &(mut a) = &1;
a = 100;
println!("{}", a); //=> 100
mutがどっちに付くのが優先なのか(イミュータブルなaの参照なのかaのイミュータブル参照なのか)覚えてないと適切に()付けられないね、覚えりゃいいんだけども
Rustの話に限らずもっと根本的な解決方法ってないのかな?
()をいろんな意味に酷使し過ぎでは?関数の引数部分、式の評価順変更、タプル、等々
型は後置修飾なのに&やmutはなんで前から懸かるの?
これ全部RPNにすれば解釈の曖昧さがなくなって優先順位の()が要らなくなり、関数呼び出しもf1(1, f2(2, 3), f3(4))は1 2 3 f2 4 f3 f1となって、タプル以外の()撲滅できないか?
パターンマッチで参照外しと絡むとややこしいなぁ
// 要素1のタプルはカンマ必要
let (mut a, ) = (1, );
a = 100;
println!("{}", a); //=> 100
// 要素1のタプルはカンマ必要
let &(mut a, ) = &(1, );
a = 100;
println!("{}", a); //=> 100
// (式)と区別つかないからとか
let &(mut a) = &(1);
a = 100;
println!("{}", a); //=> 100
// error[E0308]: mismatched types
let &mut a = &1; // ←ココ
a = 100;
println!("{}", a);
// こっちはok
let &(mut a) = &1;
a = 100;
println!("{}", a); //=> 100
mutがどっちに付くのが優先なのか(イミュータブルなaの参照なのかaのイミュータブル参照なのか)覚えてないと適切に()付けられないね、覚えりゃいいんだけども
Rustの話に限らずもっと根本的な解決方法ってないのかな?
()をいろんな意味に酷使し過ぎでは?関数の引数部分、式の評価順変更、タプル、等々
型は後置修飾なのに&やmutはなんで前から懸かるの?
これ全部RPNにすれば解釈の曖昧さがなくなって優先順位の()が要らなくなり、関数呼び出しもf1(1, f2(2, 3), f3(4))は1 2 3 f2 4 f3 f1となって、タプル以外の()撲滅できないか?
274デフォルトの名無しさん
2022/11/03(木) 19:40:23.88ID:4W4icteo275デフォルトの名無しさん
2022/11/03(木) 21:14:31.73ID:Z+updFpk ()については他の言語と同じだしそこで変に独自性を出してもなぁという感じ
276デフォルトの名無しさん
2022/11/03(木) 21:15:01.48ID:t6ap+kyc for &i in vec![0_usize; 5].iter() {
//iのままなんちゃら
}
for i in vec![0_usize; 5].iter() {
//*iでなんちゃら
}
参照外しはどっちをつかってる人のほうが一般的なん?
//iのままなんちゃら
}
for i in vec![0_usize; 5].iter() {
//*iでなんちゃら
}
参照外しはどっちをつかってる人のほうが一般的なん?
277デフォルトの名無しさん
2022/11/03(木) 21:21:15.76ID:0fRPRys5 Copy実装してる型なら別にどっちでも……
278デフォルトの名無しさん
2022/11/03(木) 21:35:17.79ID:b1nVlp4p union で定義した型があり、タグビットに相当するビットで variant を区別できる場合に
enum と同じ表現でパターンマッチするというようなことは出来ませんかね?
マニュアルを見た感じでは出来なさそうなので駄目で元々な相談なんですが……。
それが欲しくなった事情としては抽象的なバイトコードマシンが定義されていて
そのバイトコードをそのまま enum にマッピングできれば楽なのになと思った次第です。
enum と同じ表現でパターンマッチするというようなことは出来ませんかね?
マニュアルを見た感じでは出来なさそうなので駄目で元々な相談なんですが……。
それが欲しくなった事情としては抽象的なバイトコードマシンが定義されていて
そのバイトコードをそのまま enum にマッピングできれば楽なのになと思った次第です。
279デフォルトの名無しさん
2022/11/04(金) 04:42:50.90ID:QJXSkaei .expect("なんとかかんとかfailed.");
expectの引数はこんな文章になりがち
.expect("なんとかexpected, but かんとか found");
ならまだいいけど
コード読むときexpectというメソッド名からその引数には"期待しているものの説明"を"期待"してしまう
慣れるんだろうか…
expectの引数はこんな文章になりがち
.expect("なんとかexpected, but かんとか found");
ならまだいいけど
コード読むときexpectというメソッド名からその引数には"期待しているものの説明"を"期待"してしまう
慣れるんだろうか…
280デフォルトの名無しさん
2022/11/04(金) 08:57:52.35ID:KcmeiRV8 >>279
英単語を声に出して読んでみ
英単語を声に出して読んでみ
281デフォルトの名無しさん
2022/11/04(金) 09:12:11.15ID:NSu48ax/ >>279
公式のドキュメントにも
.expect("failed to parse number")
という例があるしあまり気にしない方がよさそう
https://doc.rust-lang.org/std/result/enum.Result.html#method.inspect
公式のドキュメントにも
.expect("failed to parse number")
という例があるしあまり気にしない方がよさそう
https://doc.rust-lang.org/std/result/enum.Result.html#method.inspect
282デフォルトの名無しさん
2022/11/04(金) 09:15:25.47ID:yWEsFaag >>281
これ英語の分からん奴が書いたんだろう
これ英語の分からん奴が書いたんだろう
283デフォルトの名無しさん
2022/11/04(金) 09:25:36.66ID:u3TD418O >>279
まあ慣れるしかないわな
俺もこの名前はおかしいと思うし世の中でもおかしいと思う人はいるようだ
https://stackoverflow.com/questions/66362625/why-is-rusts-expect-called-expect
まあ慣れるしかないわな
俺もこの名前はおかしいと思うし世の中でもおかしいと思う人はいるようだ
https://stackoverflow.com/questions/66362625/why-is-rusts-expect-called-expect
284デフォルトの名無しさん
2022/11/04(金) 09:47:45.14ID:QJXSkaei >>283
よかった、俺だけではなかったか
よかった、俺だけではなかったか
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★3 [蚤の市★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★] [蚤の市★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 中国がここまで過敏になるのは日本に前科があるから。盧溝橋、満州事変。ジャップの先制攻撃は挙げればキリがないけど [472617201]
- ぶっちゃけ天のうって昭和天のうのせいで全然ありがたみないよな
- 頭悪いやつほどガンダムとかエヴァにハマるのってなんでなの?
- 犬って顔くっつけて寝たがるよな
- ゲームボーイのゲーム
- 『猟友会がクマ駆除を嫌がるなら潰すべき。職務を放棄するハンターから免許や銃を没収して罰金を取ろう』の声、ネットで上がる [932029429]
