Rust part26 (819レス)
Rust part26 http://mevius.5ch.net/test/read.cgi/tech/1726838318/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
78: デフォルトの名無しさん [] 2024/10/02(水) 10:16:15.34 ID:XbzwGALZ 境界値検査しない言語が境界値検査する言語より遅い訳が無い http://mevius.5ch.net/test/read.cgi/tech/1726838318/78
103: デフォルトの名無しさん [sage] 2024/10/03(木) 02:04:50.11 ID:03B8BtDx >>102 >>95のRust&clang++場合は、本当は安全だけど境界チェックを取り除けなかったんだろうな http://mevius.5ch.net/test/read.cgi/tech/1726838318/103
159: デフォルトの名無しさん [sage] 2024/10/06(日) 11:07:22.09 ID:jCq2z3ec >>153 わかってないやつが言っても説得力ないよ 境界検査を外す話はこれかな https://proc-cpuinfo.fixstars.com/2019/09/rust-wins-cpp/ http://mevius.5ch.net/test/read.cgi/tech/1726838318/159
197: 警備員[Lv.1][新芽] [sage] 2024/10/11(金) 09:35:58.81 ID:4zAbwXut rustはガベコレはないけど、オブジェクトのライフタイムをコンパイル時にチェックして c++でいう deleteを自動でセットしてくれるのですか? コンパイラはそんな複雑なことができて、結果も信頼できるのでしょうか それとも、開発者が自由に書けないくらい、書き方に制約を設けてコンパイラにとって既知のパターンとなるようにしているのですかね http://mevius.5ch.net/test/read.cgi/tech/1726838318/197
338: デフォルトの名無しさん [] 2024/10/17(木) 20:18:17.74 ID:9pxlHN7V >>324 普通はこういう風に説明される https://web.sfc.keio.ac.jp/~hattori/prog-theory/ja/functional.html 1. プログラムは関数定義の集合であり、関数呼び出しによってそれらを組み合わせる。 2. 関数は first class object である。 3. 文という単位は無く、プログラムの実行とは式を評価することである。 4. 参照透過性がある。 主に、2が便利だから、rustにも部分的に採用されている http://mevius.5ch.net/test/read.cgi/tech/1726838318/338
339: デフォルトの名無しさん [sage] 2024/10/17(木) 20:46:18.51 ID:yABRuexK >>338 1と2で意味被ってんじゃん なにその頭悪い定義 自分でコピペしてて疑問に思わないのか? http://mevius.5ch.net/test/read.cgi/tech/1726838318/339
387: デフォルトの名無しさん [sage] 2024/10/19(土) 19:34:22.94 ID:/3C3bE8g >>372 定義域とか値域とか言い出してるあたりCS修めてない匂いプンプンするけど 百歩譲ってお前が言ってるのは型理論の範疇 型無の関数型がありえる以上関数型の定義とは直接関係ない http://mevius.5ch.net/test/read.cgi/tech/1726838318/387
415: デフォルトの名無しさん [sage] 2024/10/21(月) 22:09:07.40 ID:SnMtmJ3l >>378 パターンマッチ有り無しとか些末すぎる lispマクロがなぜ強力なのかを理論的に説明できないやつは関数型言語が何かを理解できてない http://mevius.5ch.net/test/read.cgi/tech/1726838318/415
454: デフォルトの名無しさん [sage] 2024/10/24(木) 20:30:14.64 ID:Izj+Eszj >>453 結局標準ライブラリでは乱数生成できないってことね、OK http://mevius.5ch.net/test/read.cgi/tech/1726838318/454
457: デフォルトの名無しさん [sage] 2024/10/24(木) 21:35:49.51 ID:Vyb04yis 理解できない人向けにどうぞ use std::hash::{BuildHasher, RandomState}; let random_value: u64 = RandomState::new().hash_one(0_u64); ここで得られる値は乱数値 (シード値としても使えることを書いただけで混乱して理解できなくなる人がいるとは想定できずにごめんね) http://mevius.5ch.net/test/read.cgi/tech/1726838318/457
497: デフォルトの名無しさん [sage] 2024/10/26(土) 22:18:58.17 ID:j2ddNQEF 今日一日勉強した成果がこれかぁ >>493 前半の話はPRNG(deterministic)とCSPRNG(unpredictable and non-deterministic)の違いで PRNGのシードもほとんどのケースは自然乱数(真の乱数)ではなくCSPRNGを使った疑似乱数 >>494 std::randomが提供しようとしているのはCSPRNGだけでなくPRNGも検討されている https://github.com/rust-lang/rust/issues/131606 つまり… >>495の結論は間違いだらけ がんばれ〜 http://mevius.5ch.net/test/read.cgi/tech/1726838318/497
522: 警備員[Lv.1][新芽] [sage] 2024/10/29(火) 00:30:06.99 ID:YvE8kkoz rustはOSやデバイスドライバなどを作る人が使うもので、ふつうに業務アプリなどを書くには敷居が高すぎるというか、習熟のためのコストが高すぎるというか、勿体無いというか 凡人には無用(無理)なのかな 学んでいて得るものは多いけど、そういった点でHaskellに似ていると思いました http://mevius.5ch.net/test/read.cgi/tech/1726838318/522
541: デフォルトの名無しさん [] 2024/10/29(火) 21:29:47.89 ID:Ck0fVC7d 循環参照が必要になるのは 設計者が頭悪しだからだよ http://mevius.5ch.net/test/read.cgi/tech/1726838318/541
593: デフォルトの名無しさん [sage] 2024/11/01(金) 21:49:04.02 ID:lqBEgicJ >>583 freeやdeleteは不要 freeせずにプログラムが終了したり落ちたりしてもメモリリークは起きない http://mevius.5ch.net/test/read.cgi/tech/1726838318/593
604: デフォルトの名無しさん [sage] 2024/11/02(土) 23:52:01.28 ID:aIv/CPhG >>595 それはむしろ逆 freeを完全にすることでメモリリークを防ぐことはできない freeはアロケータが管理するメモリバッファへ返還する動作しかしない malloc/free交互にするたびにそのバッファをゼロにするためOSやその他システムへバッファを返還する非効率をしない アロケータが管理するバッファはfree後も常に一定量が残っている つまりバッファを完全にシステム側に返還する責務をfreeは持たないしfreeで実現は無理だ そこは各システムが別の機構として責務を持っている 普通のOSならプロセス終了でバッファ含めて使用メモリ全体を自動解放することになる 組み込みシステムでもそのプログラム終了時に少なくともバッファ部分を解放する仕組みを持たなければならない freeを忘れてもあるいはfreeせぬまま異常終了となってもその仕組みによりメモリリークは起きない http://mevius.5ch.net/test/read.cgi/tech/1726838318/604
661: デフォルトの名無しさん [sage] 2024/11/07(木) 22:47:47.58 ID:SSxPh9YO static変数へ入れてしまう場合もプログラムの最後までヒープ解放しないよね 例えば以下は正規表現わざわざ使うまでもない簡単な例だけど ヒープ領域を確保して内部に持つRegexを何度も作り直すムダを避けるためにstaticに持つよくあるパターンとか それを解放するきっかけは最後までやって来ないよね fn yyyymmdd(s: &str) -> Option<(u32, u32, u32)> { const YYYYMMDD: &str = r"(\d\d\d\d)/(\d\d)/(\d\d)"; static RE: LazyLock<Regex> = LazyLock::new(|| Regex::new(YYYYMMDD).unwrap()); if let Some((_, [year, month, day])) = RE.captures(s).map(|caps| caps.extract()) { let year = year.parse().ok()?; let month = month.parse().ok()?; let day = day.parse().ok()?; Some((year, month, day)) } else { None } } http://mevius.5ch.net/test/read.cgi/tech/1726838318/661
690: デフォルトの名無しさん [sage] 2024/11/09(土) 13:21:26.67 ID:F1r07c7a いつになったら、Rustで正規表現をconst文脈でコンパイルできるようになるの? 原理的に見込みない話? http://mevius.5ch.net/test/read.cgi/tech/1726838318/690
727: デフォルトの名無しさん [sage] 2024/11/10(日) 16:34:57.50 ID:OGC8ujy2 ChatGPTもついでにCopilot Chatもゴミだよ 省略されたライフタイムの展開が自分でやったのが合ってるか自信がなくて、試しにやらせてみたらメチャクチャなことばっか言いやがった挙げ句、キレてthe Refrenceのelision rulesのところをペタペタ3回くらいコピペしたらすみません間違っていました、何度も申し訳ございません言いながらやっと正解を返してくれた 決定論的な問題を解かせるのにはまったく向いてない http://mevius.5ch.net/test/read.cgi/tech/1726838318/727
781: デフォルトの名無しさん [] 2024/11/11(月) 22:59:26.02 ID:8PeapwRR 借用まわりで質問させてくれ struct Foo { data: Option<Vec<u8>> } impl Foo { fn do_something(&mut self) -> &mut [u8] { if let Some(x) = &mut self.data { return x; } // `self.data` is assigned to here but it was already borrowed self.data = Some(vec![0u8; 10]); self.data.as_mut().unwrap() } } これで self.data への代入の際に「既に借用されている」というエラーが出るんだけど、これって回避できない? 最初の借用が if let Some(x) = ... の箇所で行われていることは理解できるんだけど、 if let のスコープを抜けても借用された状態が続く (以降のコードでの借用ができない) のが腑に落ちない http://mevius.5ch.net/test/read.cgi/tech/1726838318/781
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.360s*