公式
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 part20
https://mevius.2ch.net/test/read.cgi/tech/1677771928/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.2ch.net/test/read.cgi/tech/1514107621/
探検
Rust part21
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2023/08/15(火) 22:24:39.45ID:xzxy4cgp274デフォルトの名無しさん
2023/09/18(月) 01:48:58.76ID:u21D7vuy >>273
exercism.org どうかな
exercism.org どうかな
275デフォルトの名無しさん
2023/09/18(月) 10:51:29.83ID:+ud3D/1q276デフォルトの名無しさん
2023/09/18(月) 12:04:31.40ID:X+wkGtcX >>267
エイリアス解析がやりやすくなって本質的に同じものなのか
複製が必須なのか自動で判断して最適化される。
プログラマが判断するよりたぶん賢い。
mut を付けるかどうかは性能じゃなくてロジック的な妥当さで決めるもんだよ。
エイリアス解析がやりやすくなって本質的に同じものなのか
複製が必須なのか自動で判断して最適化される。
プログラマが判断するよりたぶん賢い。
mut を付けるかどうかは性能じゃなくてロジック的な妥当さで決めるもんだよ。
277デフォルトの名無しさん
2023/09/18(月) 12:15:08.64ID:eKGbn4o/ techempowerベンチ見るとrustと比較してgoがしょぼいけど
こんなものなの?
こんなものなの?
278デフォルトの名無しさん
2023/09/18(月) 12:28:49.50ID:X+wkGtcX つよつよプログラマがチューニングすれば際限なく性能を挙げられるという意味での性能の良さと
非プログラマがテキトーに書いても及第点程度の性能が出るというのは言語として両立しにくい。
仮にしょぼいのが本当だとしてもトレードオフになる何かがあったりするから
総合的な使用感は実際に使ってみないとよくわからん。
非プログラマがテキトーに書いても及第点程度の性能が出るというのは言語として両立しにくい。
仮にしょぼいのが本当だとしてもトレードオフになる何かがあったりするから
総合的な使用感は実際に使ってみないとよくわからん。
279デフォルトの名無しさん
2023/09/18(月) 12:39:00.83ID:b4Z9xD4H280デフォルトの名無しさん
2023/09/18(月) 12:44:14.37ID:AWdb6cD0 なんでもイミュータブルじゃなくて必要な時にミュータブルにしつつ安全性をコンパイラが保証してくれるのがいいんだよなぁ。
281デフォルトの名無しさん
2023/09/18(月) 13:13:11.65ID:eKGbn4o/ そもそも、goはc#にすら負けてね?
1番高速じゃなくても2番目あたりでいいかなと思ってるんだけど
どれがいいのかなと
ななやむぐらいならわかりやすい1番にしとけばいいのか?
1番高速じゃなくても2番目あたりでいいかなと思ってるんだけど
どれがいいのかなと
ななやむぐらいならわかりやすい1番にしとけばいいのか?
282デフォルトの名無しさん
2023/09/18(月) 13:16:25.44ID:eKGbn4o/ goのgc調べてみましたが参照カウントとかじゃないのか
283デフォルトの名無しさん
2023/09/18(月) 13:54:07.10ID:1tuWbz8L Rustは見た目が汚いのが困る
もういっそCの方がきれいで安全で保守性が高いまである
もういっそCの方がきれいで安全で保守性が高いまである
284デフォルトの名無しさん
2023/09/18(月) 14:01:16.96ID:6k3cBrAf Cは大きなプロジェクトが汚すぎる
モジュールで名前空間分けられないから
モジュールで名前空間分けられないから
285デフォルトの名無しさん
2023/09/18(月) 14:04:02.95ID:DByXMqbY C言語は"安全装置のない銃"に徹しているからな
シンプルなだけに危険いっぱいだ
シンプルなだけに危険いっぱいだ
286デフォルトの名無しさん
2023/09/18(月) 14:43:26.49ID:EhgpbTsZ C#はunsafeやSpanがあるので頑張れば結構速い
ネイティブコンパイルもできるようになってきたからとにかく速度を求めるようなアプリじゃなければ十分
ネイティブコンパイルもできるようになってきたからとにかく速度を求めるようなアプリじゃなければ十分
287デフォルトの名無しさん
2023/09/18(月) 15:27:10.56ID:orcKBY2S Rustもcrateのダウンロード数に応じて
crate開発者が課金される時代か
メシウマじゃなかった胸熱
crate開発者が課金される時代か
メシウマじゃなかった胸熱
288デフォルトの名無しさん
2023/09/18(月) 15:57:52.35ID:qN+5vY8o 何の話かと思えばunityか
289デフォルトの名無しさん
2023/09/18(月) 16:04:36.29ID:2MGtTYvZ とりあえずミュータブルの話をするならshared xor mutable に触れなきゃ意味ないし、それなら元ネタのトランザクション分離レベルぐらいは勉強しとかんといかん。
290デフォルトの名無しさん
2023/09/18(月) 16:05:47.88ID:7BUJ27i/291デフォルトの名無しさん
2023/09/18(月) 17:52:28.36ID:yZdHYJJu292デフォルトの名無しさん
2023/09/18(月) 22:02:21.17ID:1tuWbz8L >>291
前置宣言だから綺麗に書けるまである
前置宣言だから綺麗に書けるまである
293デフォルトの名無しさん
2023/09/18(月) 22:29:41.23ID:b4Z9xD4H >>283
Rustは普通というか見た目キレイ側
Rustは普通というか見た目キレイ側
294デフォルトの名無しさん
2023/09/18(月) 23:41:51.16ID:X+wkGtcX >>290
ロジックが正しくてもバイナリレベルでは脆弱性になることがある。
分かりやすい例では、言語の理屈では寿命を終えたはずのオブジェクトでも再利用される機会がなくて内容が残り続けるとかね。
そういうときにでもどうにかする知見が C/C++ では積み上がってる。
普通に書いて脆弱性が発生しにくいに越したことはないが、脆弱性が発生していることがわかったときに直せる確信があるというのはセキュリティが重要な場面で C/C++ を使う理由になる。
C/C++ が「自分の足を撃つ」ことになるなんてのは百も二百も承知の上で、「自分の足を撃つことも出来る」ことに価値を見いだしてるんだよ。
もともと自分の足を撃つというのは戦争に行かなくて済むようにわざと撃つことがあるというのを下敷きにした言い回しで、危険であると同時にそれが必要なこともあるというニュアンスを含んでいる。
ロジックが正しくてもバイナリレベルでは脆弱性になることがある。
分かりやすい例では、言語の理屈では寿命を終えたはずのオブジェクトでも再利用される機会がなくて内容が残り続けるとかね。
そういうときにでもどうにかする知見が C/C++ では積み上がってる。
普通に書いて脆弱性が発生しにくいに越したことはないが、脆弱性が発生していることがわかったときに直せる確信があるというのはセキュリティが重要な場面で C/C++ を使う理由になる。
C/C++ が「自分の足を撃つ」ことになるなんてのは百も二百も承知の上で、「自分の足を撃つことも出来る」ことに価値を見いだしてるんだよ。
もともと自分の足を撃つというのは戦争に行かなくて済むようにわざと撃つことがあるというのを下敷きにした言い回しで、危険であると同時にそれが必要なこともあるというニュアンスを含んでいる。
295デフォルトの名無しさん
2023/09/18(月) 23:47:04.73ID:h2SSCK+Z296デフォルトの名無しさん
2023/09/19(火) 07:20:03.69ID:H6NF4sQp >>294
目的のために敢えてUB引き起こすってこと?
目的のために敢えてUB引き起こすってこと?
297デフォルトの名無しさん
2023/09/19(火) 11:44:23.57ID:B2l8DHRh >>294
>そういうときにでもどうにかする知見が C/C++ では積み上がってる。
所謂、バッドノウハウね。
そりゃさんざん今までやりまくって、なんなら現在進行形だったりするんだからノウハウも積み上がるさ。
>そういうときにでもどうにかする知見が C/C++ では積み上がってる。
所謂、バッドノウハウね。
そりゃさんざん今までやりまくって、なんなら現在進行形だったりするんだからノウハウも積み上がるさ。
298デフォルトの名無しさん
2023/09/19(火) 13:23:13.06ID:Gn3exU3j データベースのデータファイルの中の構造は、
C言語の「全部生メモリ」状態で、ポインタの
変わりにファイルポジションになっていて
普通に相互リンクトリンクやファイルポジション
をデータの位置を表現するのに使われていたりする。
だから、実行中のプログラムの RAM のメモリー安全
は確保されたとしても、ファイルの中は安全には
ならない。
C言語の「全部生メモリ」状態で、ポインタの
変わりにファイルポジションになっていて
普通に相互リンクトリンクやファイルポジション
をデータの位置を表現するのに使われていたりする。
だから、実行中のプログラムの RAM のメモリー安全
は確保されたとしても、ファイルの中は安全には
ならない。
299デフォルトの名無しさん
2023/09/19(火) 13:27:32.55ID:Gn3exU3j >>298
[補足]
・ポインターの代わりにファイルポジションが使用され、
古来の plain C と同様のプロググラミングが行なわれている。
・LockFile や fnctl で「部分ロック」が当たり前
のように使用されており、非常に複雑な
配慮が必要なプログラミングになっている。
もっといえば、DBMS を使うアプリケーションも、非常に
配慮が必要な場合も多く、どのようなテーブルやカラム構造
にするかは難しい。ID番号をリンクしたり、どうやって
データを参照しあうかなどが生ポインタと同様の難しさ
を持っていて、わずかでも間違えば、全データが論理破損
してしまう可能性を持っている。
[補足]
・ポインターの代わりにファイルポジションが使用され、
古来の plain C と同様のプロググラミングが行なわれている。
・LockFile や fnctl で「部分ロック」が当たり前
のように使用されており、非常に複雑な
配慮が必要なプログラミングになっている。
もっといえば、DBMS を使うアプリケーションも、非常に
配慮が必要な場合も多く、どのようなテーブルやカラム構造
にするかは難しい。ID番号をリンクしたり、どうやって
データを参照しあうかなどが生ポインタと同様の難しさ
を持っていて、わずかでも間違えば、全データが論理破損
してしまう可能性を持っている。
300デフォルトの名無しさん
2023/09/19(火) 14:54:41.30ID:rHe1cSmV だれか巻き込まれてないか?
https://www.youtube.com/watch?v=SzpaDEhm-8Q
https://www.youtube.com/watch?v=SzpaDEhm-8Q
301デフォルトの名無しさん
2023/09/19(火) 15:58:16.52ID:H6NF4sQp 形式検証をrustに組み込むのってどれくらい現実的なんだろ
言語本体ではなくてproc macroで実現できるのかね
言語本体ではなくてproc macroで実現できるのかね
302デフォルトの名無しさん
2023/09/19(火) 16:39:15.02ID:p1GkLls0 >>299
一般的なDBMSは中央集権でページアクセスを一元管理してるから生ポインタとは全く質が異なる
一般的なDBMSは中央集権でページアクセスを一元管理してるから生ポインタとは全く質が異なる
303デフォルトの名無しさん
2023/09/19(火) 17:37:47.80ID:/HqZkxNe >>302
ただ、購入履歴などは「誰が購入したか」のIDを
購入項目テーブルとユーザーテーブルを結びつける
必要があるので、IDがポインタの役割になる。
わずかでも狂うと、別人が買った項目が結び付け
られてしまう。
値が1つ、または、行が一行でもずれるとほぼ全体が破綻する。
ただ、購入履歴などは「誰が購入したか」のIDを
購入項目テーブルとユーザーテーブルを結びつける
必要があるので、IDがポインタの役割になる。
わずかでも狂うと、別人が買った項目が結び付け
られてしまう。
値が1つ、または、行が一行でもずれるとほぼ全体が破綻する。
304デフォルトの名無しさん
2023/09/19(火) 18:14:50.54ID:mxtPnJ5/ DBでも何でもそうだけどshared xor mutableも必要
305デフォルトの名無しさん
2023/09/19(火) 18:23:26.80ID:/HqZkxNe 販売サイトなどのバグって怖くて、500円のものが
バグれば5000円になったりする可能性ある。
そういうものは、プログラミングを気をつける
しかなくて、Rustの安全対策でも防げない。
バグれば5000円になったりする可能性ある。
そういうものは、プログラミングを気をつける
しかなくて、Rustの安全対策でも防げない。
306デフォルトの名無しさん
2023/09/19(火) 18:32:19.28ID:gvKDfDmE 「気を付ける」の内訳にはテストを書く習慣とかが含まれてる。
気を付けないとしょうがないけど
気を付けるのに使える道具はそれなりに揃ってる。
気を付けないとしょうがないけど
気を付けるのに使える道具はそれなりに揃ってる。
307デフォルトの名無しさん
2023/09/19(火) 18:34:24.73ID:mxtPnJ5/ すべてのバグをなくせる言語がないのは当たり前
データ競合により起こるそういう値のバグも現実にあるのだからRustでその手のバグをなくせるのも事実
データ競合により起こるそういう値のバグも現実にあるのだからRustでその手のバグをなくせるのも事実
308デフォルトの名無しさん
2023/09/19(火) 18:55:07.79ID:p1GkLls0 >>303
そのレイヤーの話でもDBMSはトランザクション管理されてるから生ポインタとは状況が全く異なる
トランザクショナルメモリで管理された共有メモリと生ポインタの違い(実際はそれよりもまだ差がある)
そのレイヤーの話でもDBMSはトランザクション管理されてるから生ポインタとは状況が全く異なる
トランザクショナルメモリで管理された共有メモリと生ポインタの違い(実際はそれよりもまだ差がある)
309デフォルトの名無しさん
2023/09/19(火) 19:02:27.03ID:p1GkLls0 >>304
同時実行制御には大きく楽観的制御と悲観的制御があるがshared xor mutableは後者
高い同時実行性能が求められる場合には楽観的同時実行制御を使うことが増えている
DBの話だけでなくロックフリーアルゴリズムも基本は楽観的制御
同時実行制御には大きく楽観的制御と悲観的制御があるがshared xor mutableは後者
高い同時実行性能が求められる場合には楽観的同時実行制御を使うことが増えている
DBの話だけでなくロックフリーアルゴリズムも基本は楽観的制御
310デフォルトの名無しさん
2023/09/19(火) 19:54:07.45ID:/x1C5Bro >>309
楽観的排他制御を用いることができる現実的ケースが狭い
衝突した時の処理やり直しコストも考慮する必要がある
その一般的な話とは別にポインタ(参照)の話の方は必ず衝突するためsingle writer xor multiple readersが必須
楽観的排他制御を用いることができる現実的ケースが狭い
衝突した時の処理やり直しコストも考慮する必要がある
その一般的な話とは別にポインタ(参照)の話の方は必ず衝突するためsingle writer xor multiple readersが必須
311デフォルトの名無しさん
2023/09/19(火) 21:00:27.72ID:BGD+Lo74 排他制御も凄く奥深い話ではあるが、そういう
ものだけでなく、単なるプログラムミスで、
ID番号が1つずれたり、行がなんらかの事が
原因で1ぎょうずれたりしても、大変な問題
を巻き起こす。だからテストは必須。
ものだけでなく、単なるプログラムミスで、
ID番号が1つずれたり、行がなんらかの事が
原因で1ぎょうずれたりしても、大変な問題
を巻き起こす。だからテストは必須。
312デフォルトの名無しさん
2023/09/19(火) 21:30:53.89ID:cyrWzrEE RDBMSで物理的な一行とか関係ない
テキストファイルに永続化してる素人だな
テキストファイルに永続化してる素人だな
313デフォルトの名無しさん
2023/09/19(火) 21:34:30.39ID:BGD+Lo74 >>312
DBMS自体をプログラムする場合には関係ある。
DBMS自体をプログラムする場合には関係ある。
314デフォルトの名無しさん
2023/09/19(火) 21:41:37.42ID:BGD+Lo74 それと、DBMSを使うに徹する場合でも、行に
付ける ID 番号の管理がまた問題になる。
それも慎重に良く考える必要がある。
付ける ID 番号の管理がまた問題になる。
それも慎重に良く考える必要がある。
315デフォルトの名無しさん
2023/09/19(火) 21:50:10.01ID:LcWw/5IR それサロゲートキー義務で設計したらの話でしょ
316デフォルトの名無しさん
2023/09/19(火) 21:55:08.52ID:BGD+Lo74 >>315
色々な機能を実装する上で、色々有り得る。
色々な機能を実装する上で、色々有り得る。
317デフォルトの名無しさん
2023/09/19(火) 22:32:18.55ID:e2nf9Krk >それと、DBMSを使うに徹する場合でも、行に
>付ける ID 番号の管理がまた問題になる。
DB板にもそういうのいるけどRDBにID必要と考えてるやつはもっかい勉強してこい
>付ける ID 番号の管理がまた問題になる。
DB板にもそういうのいるけどRDBにID必要と考えてるやつはもっかい勉強してこい
318デフォルトの名無しさん
2023/09/19(火) 22:44:03.77ID:5k6OZf8O >>310
>楽観的排他制御を用いることができる現実的ケースが狭い
MVCCやCASが楽観的制御
分散非同期が前提の世界では楽観的制御がデフォルト
じゃないとスケールしないから
Rustがコンパイル時悲観的制御にしてるのは実行時の管理を無くしたいからであってポインタだとshared xor mutableが必須だからではない
トランザクショナルメモリがその一例
>楽観的排他制御を用いることができる現実的ケースが狭い
MVCCやCASが楽観的制御
分散非同期が前提の世界では楽観的制御がデフォルト
じゃないとスケールしないから
Rustがコンパイル時悲観的制御にしてるのは実行時の管理を無くしたいからであってポインタだとshared xor mutableが必須だからではない
トランザクショナルメモリがその一例
319デフォルトの名無しさん
2023/09/19(火) 22:57:59.75ID:cyrWzrEE DBMSをプログラムする場合には当然関係ある
でも1行ずれたら大変とかいう下手くそは任されないので関係ない
でも1行ずれたら大変とかいう下手くそは任されないので関係ない
320デフォルトの名無しさん
2023/09/19(火) 23:03:17.25ID:BGD+Lo74321デフォルトの名無しさん
2023/09/19(火) 23:06:22.84ID:r+harKS8 可変参照と不変参照に対してMVCCなんて使えないよ
それはデータをコピーすることと同じになってしまう
ソフトウェアトランザクショナルメモリはどの環境でも使用可能なのに不利だからほぼ使われていない
さらにRustのshared xor mutableはそれらと独立した話であり共存できる話なのでshared xor mutable必須は問題ない
それはデータをコピーすることと同じになってしまう
ソフトウェアトランザクショナルメモリはどの環境でも使用可能なのに不利だからほぼ使われていない
さらにRustのshared xor mutableはそれらと独立した話であり共存できる話なのでshared xor mutable必須は問題ない
322デフォルトの名無しさん
2023/09/20(水) 01:44:31.66ID:16Zt41/R 会話のドッジボール
323デフォルトの名無しさん
2023/09/20(水) 09:31:56.94ID:R98wQa7Y >>303
マイニャンバーですね判ります
マイニャンバーですね判ります
324デフォルトの名無しさん
2023/09/20(水) 09:33:37.66ID:R98wQa7Y325デフォルトの名無しさん
2023/09/20(水) 09:37:31.04ID:R98wQa7Y >>313
いやいやωωω
いやいやωωω
326デフォルトの名無しさん
2023/09/20(水) 09:39:49.95ID:erhjcmms327デフォルトの名無しさん
2023/09/20(水) 09:41:04.74ID:erhjcmms328デフォルトの名無しさん
2023/09/20(水) 10:30:52.85ID:jgkdiTgC SQLiteはファイルロックに頼らざるを得ない仕組みなのでDBとしては特殊
329デフォルトの名無しさん
2023/09/20(水) 11:17:52.24ID:InZb605T 俺が高校生だった25年前頃、志木駅で500円分ぐらいのパンを買ったら4000円ぐらい請求されたぞ
330デフォルトの名無しさん
2023/09/20(水) 11:46:41.00ID:UfpBE+4Y まあ他のバグが減ればその分本質的な問題に注力出来るわな
そういうのはテストケースも綿密に行う必要がある
そういうのはテストケースも綿密に行う必要がある
331デフォルトの名無しさん
2023/09/20(水) 12:17:55.14ID:1SabZs8d >>317
むしろナチュラルキーにして詰んだりバグってる
むしろナチュラルキーにして詰んだりバグってる
332デフォルトの名無しさん
2023/09/20(水) 13:53:51.14ID:56axJTdd ナチュラルキーがプロジェクトの最後までユニーク保障されたことなんかマジで無いズラ
サロゲートキーは必須ズラ
サロゲートキーは必須ズラ
333デフォルトの名無しさん
2023/09/20(水) 14:13:13.56ID:I55f6i4N 今日入門した。ツアーやったらサンプルプログラムが80個ぐらいできた
fn a(i: i32){ println!("{}",i) }
fn main(){ let x = 10; a(x); a(x) }
これは10が2回出力される
構造体引数だと2回よべずにエラーが出たけど
プリミティブ型?なら所有権がどうのとかなくてスタックにコピーされるだけであってる?
fn a(i: i32){ println!("{}",i) }
fn main(){ let x = 10; a(x); a(x) }
これは10が2回出力される
構造体引数だと2回よべずにエラーが出たけど
プリミティブ型?なら所有権がどうのとかなくてスタックにコピーされるだけであってる?
334333
2023/09/20(水) 14:30:53.92ID:I55f6i4N 別のチュートリアル始めて理解した
コピートレイトが実装されてるからなのか
コピートレイトが実装されてるからなのか
335デフォルトの名無しさん
2023/09/20(水) 15:53:12.11ID:R98wQa7Y #[derive(Copy)] 禁止
336デフォルトの名無しさん
2023/09/20(水) 18:16:56.45ID:52Xj2Gp1 >>328
他のDBMSでもプロセス間の排他制御は
出来る方法が限られているのでファイルロックを
使っている可能性が高い。
他の方法だと、mkdir 法や、名前付きパイプが
あることがあるが、ファイルロックの方が便利。
一つのプロセスの中のスレッド間の排他制御は
色々な方法が有るが、プロセスを越えた排他制御
は意外と他に出来る方法が無いから。
他のDBMSでもプロセス間の排他制御は
出来る方法が限られているのでファイルロックを
使っている可能性が高い。
他の方法だと、mkdir 法や、名前付きパイプが
あることがあるが、ファイルロックの方が便利。
一つのプロセスの中のスレッド間の排他制御は
色々な方法が有るが、プロセスを越えた排他制御
は意外と他に出来る方法が無いから。
337デフォルトの名無しさん
2023/09/20(水) 18:33:23.45ID:I55f6i4N338デフォルトの名無しさん
2023/09/20(水) 18:51:23.96ID:o02nl+od rustの名前の由来は?
339デフォルトの名無しさん
2023/09/20(水) 19:07:11.98ID:DDNbmZRy340デフォルトの名無しさん
2023/09/20(水) 19:38:07.98ID:I55f6i4N OpenGLをやりたくてcrates.ioで最新版を調べてCargo.tomlに
[dependencies]
bytemuck = "1.14.0"
ogl33 = "0.3.0"
[dev-dependencies]
beryllium = "0.13.0"
imagine = "0.5.1"
このプログラムをビルドするとberylliumがunresolvedと出ます
use beryllium::*;
fn main() { let sdl = Sdl::init(init::InitFlags::EVERYTHING); }
berylliumのパッケージ名が変わったりしたのでしょうか
わかる人いますか
[dependencies]
bytemuck = "1.14.0"
ogl33 = "0.3.0"
[dev-dependencies]
beryllium = "0.13.0"
imagine = "0.5.1"
このプログラムをビルドするとberylliumがunresolvedと出ます
use beryllium::*;
fn main() { let sdl = Sdl::init(init::InitFlags::EVERYTHING); }
berylliumのパッケージ名が変わったりしたのでしょうか
わかる人いますか
341デフォルトの名無しさん
2023/09/20(水) 20:29:54.63ID:X4X5BtpX342デフォルトの名無しさん
2023/09/20(水) 21:48:28.31ID:UIQvYKk8 >>331
ナチュラルキーをまともに扱えない奴はそもそも設計者失格だろう
ナチュラルキーをまともに扱えない奴はそもそも設計者失格だろう
343デフォルトの名無しさん
2023/09/20(水) 22:20:31.31ID:DDNbmZRy >>340
単純に動かすだけならdev-dependenciesからdependenciesに移せばいいと思う
テスト用の依存としてdev-dependenciesにこだわるなら
use beryllium::*;
の前に
extern crate beryllium;
を入れれば通るかな
あまりdev-dependencies使わないから分からん
単純に動かすだけならdev-dependenciesからdependenciesに移せばいいと思う
テスト用の依存としてdev-dependenciesにこだわるなら
use beryllium::*;
の前に
extern crate beryllium;
を入れれば通るかな
あまりdev-dependencies使わないから分からん
344デフォルトの名無しさん
2023/09/20(水) 22:37:25.93ID:I55f6i4N >>343 ありがとうございます、動かせました!楽しい
345デフォルトの名無しさん
2023/09/20(水) 23:23:26.93ID:T1fPPHAq dev-dependenciesについてはこの辺参照
testやbenchやexampleだけで使う依存を定義するやつ
https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#development-dependencies
main関数の中で必要なら普通のdependencyにしないといけない
extern crateは関係ない
testやbenchやexampleだけで使う依存を定義するやつ
https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#development-dependencies
main関数の中で必要なら普通のdependencyにしないといけない
extern crateは関係ない
346デフォルトの名無しさん
2023/09/20(水) 23:35:58.10ID:8RfwRI5f347デフォルトの名無しさん
2023/09/21(木) 00:37:39.43ID:hd16Ksmk >>336
単一ファイルでまかなうSqliteと一緒にすんな
単一ファイルでまかなうSqliteと一緒にすんな
348デフォルトの名無しさん
2023/09/21(木) 02:18:25.33ID:AFY6neVf >>341
CreateMutex()の第三引数に名前を指定しなければ
ならないが、ユニークな名前をどうやって作るか
が大問題になるよね。
その点、LockFile() なら名前衝突の問題は
最初から簡単に確実に回避できる。
CreateMutex()の第三引数に名前を指定しなければ
ならないが、ユニークな名前をどうやって作るか
が大問題になるよね。
その点、LockFile() なら名前衝突の問題は
最初から簡単に確実に回避できる。
349デフォルトの名無しさん
2023/09/21(木) 03:10:10.71ID:2dN46EMa 普通のDBってインターフェースを一つのサーバーで提供してると思うんだけど
名前解決が出来ない管理なんてあるの?
名前解決が出来ない管理なんてあるの?
350デフォルトの名無しさん
2023/09/21(木) 03:14:44.34ID:AFY6neVf351デフォルトの名無しさん
2023/09/21(木) 04:39:08.18ID:uFUX5dn+ まずプロセスを分けるメリットがない
CPUコアスレッド数のスレッドを立ち上げれば一つのプロセスでそのマシンのリソースを使い切れる
ただし通信待ちでスレッドが止まったらその分のCPUリソースを無駄にしてしまうため各スレッドで複数のタスクを動かす
ただし各スレッドが抱えるタスク数は偏りがちなことが知られているため暇なスレッドは他からタスクを盗んで実行できるようにする
以上のスケジューリングをするのがRustのtokio
CPUコアスレッド数のスレッドを立ち上げれば一つのプロセスでそのマシンのリソースを使い切れる
ただし通信待ちでスレッドが止まったらその分のCPUリソースを無駄にしてしまうため各スレッドで複数のタスクを動かす
ただし各スレッドが抱えるタスク数は偏りがちなことが知られているため暇なスレッドは他からタスクを盗んで実行できるようにする
以上のスケジューリングをするのがRustのtokio
352デフォルトの名無しさん
2023/09/21(木) 08:25:19.60ID:CT30w3BF353デフォルトの名無しさん
2023/09/21(木) 10:46:48.71ID:BwXSXzYj354デフォルトの名無しさん
2023/09/21(木) 10:59:44.45ID:3hJtL3Ib mutable xor sharedはトランザクション分離レベルで言うとSERIALIZABLEだと思うけど、書き込み性能にけっこう致命的なパフォーマンス劣化が出たりしない?
あらかじめ主要な書き込み先オブジェクトの参照を保持しておくとかのオブジェクト指向の定石が利用出来ないし。
あらかじめ主要な書き込み先オブジェクトの参照を保持しておくとかのオブジェクト指向の定石が利用出来ないし。
355デフォルトの名無しさん
2023/09/21(木) 11:03:41.54ID:KbwNEPLt SQLiteは今、日本の人が一人でRustに移植してるみたいだけど?
完成度は知らない
完成度は知らない
356デフォルトの名無しさん
2023/09/21(木) 13:31:34.10ID:cACw6b27 >>351
MySQLやPostgreSQLみたいな普通のDBMSでは
単一プロセスがデーモンとして常駐してファイル更新
を一元管理するのが前提となっているが、
SQLiteでは、そのような常駐プロセスが
存在しなくて、各アプリがSQLiteのライブラリ
プログラムを呼び出して、ライブラリの関数が
排他制御を行なって単一ファイルを壊さないように
ロックしながら互いに強調しつつ、部分書き換えや
部分読み込みを行っている。
つまり、SQLiteは管理を担う単一の常駐プログラム
がなくて、個々のアプリ(の中のライブラリ)が
協調動作するようになっている。
だから、プロセス間で同期を取る仕組みが必要となる。
しかし、CreateMutexでは、ユニークな名前が必要
となってしまい、その名前を決めるのがメンドクサイ。
一方、LockFile だとファイルのパス名で自動的に
ユニークの名前に出来てしまうから、非常に簡単に
安全に正しくロックできる。
MySQLやPostgreSQLみたいな普通のDBMSでは
単一プロセスがデーモンとして常駐してファイル更新
を一元管理するのが前提となっているが、
SQLiteでは、そのような常駐プロセスが
存在しなくて、各アプリがSQLiteのライブラリ
プログラムを呼び出して、ライブラリの関数が
排他制御を行なって単一ファイルを壊さないように
ロックしながら互いに強調しつつ、部分書き換えや
部分読み込みを行っている。
つまり、SQLiteは管理を担う単一の常駐プログラム
がなくて、個々のアプリ(の中のライブラリ)が
協調動作するようになっている。
だから、プロセス間で同期を取る仕組みが必要となる。
しかし、CreateMutexでは、ユニークな名前が必要
となってしまい、その名前を決めるのがメンドクサイ。
一方、LockFile だとファイルのパス名で自動的に
ユニークの名前に出来てしまうから、非常に簡単に
安全に正しくロックできる。
357デフォルトの名無しさん
2023/09/21(木) 16:18:11.92ID:B1OFnXUk 3文字で言うと
358デフォルトの名無しさん
2023/09/21(木) 16:54:51.87ID:2fMT8T96 SQLite便利だよ
359デフォルトの名無しさん
2023/09/21(木) 17:25:46.98ID:WBcwDy8I sqliteは便利だけどテーブルロックなところがうんこなんだよな
begin conccurentとか予定あるらしいが
begin conccurentとか予定あるらしいが
360デフォルトの名無しさん
2023/09/21(木) 20:32:07.68ID:2tR0WsIS 複数のプロセスからアクセスしないのを前提条件に出来る場合もそれなりにあるもんな。
ちょっとしたツールでデータベースのプロセスをいちいち起動するのはわずらわしいし、 sqlite くらいの気軽さはありがたいのは確か。
sqlite みたいな方針のデータベースが他に台頭してないのが不思議なくらいだ。
ちょっとしたツールでデータベースのプロセスをいちいち起動するのはわずらわしいし、 sqlite くらいの気軽さはありがたいのは確か。
sqlite みたいな方針のデータベースが他に台頭してないのが不思議なくらいだ。
361デフォルトの名無しさん
2023/09/21(木) 20:41:30.87ID:PYjX2iWU362デフォルトの名無しさん
2023/09/21(木) 20:59:40.19ID:WBcwDy8I もっとひどいデータベース単位か
https://www.sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
これでページ単位が導入されても、select for updateみたいに明示的にロック
がほしいな
リトライとかだるい
https://www.sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
これでページ単位が導入されても、select for updateみたいに明示的にロック
がほしいな
リトライとかだるい
363デフォルトの名無しさん
2023/09/21(木) 20:59:47.82ID:WBcwDy8I もっとひどいデータベース単位か
https://www.sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
これでページ単位が導入されても、select for updateみたいに明示的にロック
がほしいな
リトライとかだるい
https://www.sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
これでページ単位が導入されても、select for updateみたいに明示的にロック
がほしいな
リトライとかだるい
364デフォルトの名無しさん
2023/09/21(木) 23:58:45.91ID:+/xN81gC 以下のような関数(実際のものとは少し違いますが)を実装してみたのですがイテレータのメソッドチェーンの箇所で型が合っていないとコンパイルエラーが発生します
アルゴリズム自体を変更することで目的としていた処理はできましたが結局このエラーの直し方がわかりません
ライフタイム周りが原因だとは考えていますがどのように修正すればよいしょうか
fn hoge(
func: &impl Fn((&i64, i64)) -> i64,
arr: &[i64],
ret: &mut Vec<impl Iterator<Item = i64>>
) {
ret.push(arr.iter().zip(std::iter::repeat(arr[0])).map(func));
for i in 1..arr.len() {
hoge(func, &arr[i..], ret);
}
}
アルゴリズム自体を変更することで目的としていた処理はできましたが結局このエラーの直し方がわかりません
ライフタイム周りが原因だとは考えていますがどのように修正すればよいしょうか
fn hoge(
func: &impl Fn((&i64, i64)) -> i64,
arr: &[i64],
ret: &mut Vec<impl Iterator<Item = i64>>
) {
ret.push(arr.iter().zip(std::iter::repeat(arr[0])).map(func));
for i in 1..arr.len() {
hoge(func, &arr[i..], ret);
}
}
365デフォルトの名無しさん
2023/09/22(金) 09:19:17.11ID:dkRHHNCe fn hoge(
func: &impl Fn((&i64, i64)) -> i64,
arr: &[i64],
ret: &mut Vec<impl Iterator<Item = i64>>
) {
ret.push(arr.iter().zip(std::iter::repeat(arr[0])).map(func).collect()[0]);
for i in 1..arr.len() {
hoge(func, &arr[i..], ret);
}
}
func: &impl Fn((&i64, i64)) -> i64,
arr: &[i64],
ret: &mut Vec<impl Iterator<Item = i64>>
) {
ret.push(arr.iter().zip(std::iter::repeat(arr[0])).map(func).collect()[0]);
for i in 1..arr.len() {
hoge(func, &arr[i..], ret);
}
}
366デフォルトの名無しさん
2023/09/22(金) 12:36:56.71ID:E1X0qleO lifetimeの問題もあるかもしれないがimpl Iteratorの型をとるところに関数内で生成したイテレータを渡しているのがそもそもおかしい
367デフォルトの名無しさん
2023/09/22(金) 13:53:26.70ID:dkRHHNCe >>360
mdb
mdb
368デフォルトの名無しさん
2023/09/22(金) 16:15:11.47ID:v8mgsVW8 >>366
mapにはhogeの外から引数として関数を渡しているので再帰呼出しごとにイテレータの型は変わらないですし
```
let mut v = Vec::new();
hoge(|(&a, b)| a + b, &[1, 3, 5], &mut v);
```
という形でhogeを呼び出せばイテレータの型は自動的に推論されると思うんですが...
mapにはhogeの外から引数として関数を渡しているので再帰呼出しごとにイテレータの型は変わらないですし
```
let mut v = Vec::new();
hoge(|(&a, b)| a + b, &[1, 3, 5], &mut v);
```
という形でhogeを呼び出せばイテレータの型は自動的に推論されると思うんですが...
369デフォルトの名無しさん
2023/09/22(金) 18:07:36.44ID:KH67E8jw impl TraitはTraitを実装した型のいずれか一つを受け入れるだけで、Traitを実装した型全てを受け入れるわけではない
370デフォルトの名無しさん
2023/09/22(金) 18:31:55.39ID:v8mgsVW8 >>369
mapの中に直接クロージャを渡せば確かにその制限に引っかかりますが、今回は再帰の中で一つの関数を使いまわしているのでimpl Iteratorの型は一つに固定されませんか?
mapの中に直接クロージャを渡せば確かにその制限に引っかかりますが、今回は再帰の中で一つの関数を使いまわしているのでimpl Iteratorの型は一つに固定されませんか?
371デフォルトの名無しさん
2023/09/22(金) 18:41:57.56ID:v8mgsVW8 >>365
イテレータのまま保持して遅延評価させたいんです
イテレータのまま保持して遅延評価させたいんです
372デフォルトの名無しさん
2023/09/22(金) 18:43:25.81ID:8SLDLfd5 関数定義から一意な具体型に推論されるのは戻り値型に書いた impl の話ですね
引数型に書いた impl は単にジェネリック引数を匿名化したものという扱いなので
hoge は I: Iterator<Item=i64> なる任意の I で単一化できるような定義が求められます
https://doc.rust-lang.org/reference/types/impl-trait.html
なので引数で&mut引き回してdynも使いたくないということであれば↓になりますかね
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=32403112ac74f1a10cadf1236590744c
引数型に書いた impl は単にジェネリック引数を匿名化したものという扱いなので
hoge は I: Iterator<Item=i64> なる任意の I で単一化できるような定義が求められます
https://doc.rust-lang.org/reference/types/impl-trait.html
なので引数で&mut引き回してdynも使いたくないということであれば↓になりますかね
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=32403112ac74f1a10cadf1236590744c
373デフォルトの名無しさん
2023/09/22(金) 19:29:43.87ID:v8mgsVW8 >>372
コンパイル通りました!ありがとうございます!
ただもう少しわがままを言うと、実際の実装ではメソッドチェーンの箇所がこれの2倍ぐらいの長さなので具体的なイテレータの型を書かずにコンパイラ任せにしたかったんですが、話を見る限りどうも無理そうですね...
コンパイル通りました!ありがとうございます!
ただもう少しわがままを言うと、実際の実装ではメソッドチェーンの箇所がこれの2倍ぐらいの長さなので具体的なイテレータの型を書かずにコンパイラ任せにしたかったんですが、話を見る限りどうも無理そうですね...
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪★2
- 【画像】外務省局長「この度はうちの🦎がすみません…」中国「……」 [165981677]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 外務省局長、よくわからないまま帰国へ [834922174]
