[過去ログ]
Rust part16 (1002レス)
Rust part16 http://mevius.5ch.net/test/read.cgi/tech/1656285423/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
337: デフォルトの名無しさん [sage] 2022/07/09(土) 22:59:01.59 ID:hVKa6Imk > 287 名前:デフォルトの名無しさん [sage] 投稿日:2022/07/09(土) 11:50:07.31 ID:lwwTn4Ql [2/3] > どちらにしてもRust使っても気楽にコーディングできるわけでもなく > メモリ構造考えなければいけないんですね 読んでなるほどなと思った よくわかんないけどとりあえず動けばいいという人と、 ちゃんと理解して自分の思う通りに動かしたい人の違いだなと http://mevius.5ch.net/test/read.cgi/tech/1656285423/337
338: デフォルトの名無しさん [sage] 2022/07/09(土) 23:05:49.23 ID:dcG9hbvO >>335 俺,win使っているが そのよい言語のRustをコンパイルするのに(C/C++する気ないのに)駄目な言語のmsvcを入れないと とコンパイルできないてのがな で、なんでmsvc必要なんだ? ひょっとしたら、linuxでもgccとかを入れないと駄目なのか http://mevius.5ch.net/test/read.cgi/tech/1656285423/338
339: デフォルトの名無しさん [sage] 2022/07/09(土) 23:15:33.27 ID:yHOdCoxc >>337 その人があまりにも知識不足の可能性が高い Rustでも他の言語と同様に(C互換FFIを除いて)メモリ構造なんて公開も保証もしていない ほとんどのプログラミング言語はメモリ構造なんて低いレベルで使うものではなくもっと抽象度の高い部分でその定義と保証がなされるもの だからRustでも他の言語と同様にメモリ構造は考えなくて良いし考えてはいけない メモリ構造は言語として保証していないし保証しないからこそ大胆なコンパイル最適化を行なっている 話を戻してその人はメモリ構造ではなくデータ構造と言いたかったのではないか? データ構造は他の言語と同様にRustでも考えなければならない それがプログラミングの中心だから http://mevius.5ch.net/test/read.cgi/tech/1656285423/339
340: デフォルトの名無しさん [sage] 2022/07/09(土) 23:30:15.11 ID:hVKa6Imk >>338 そんなこと知らずに、そういうレスしているところにドン引きだな 自分で調べた? 調べたら、その結果をここで報告よろしく http://mevius.5ch.net/test/read.cgi/tech/1656285423/340
341: デフォルトの名無しさん [sage] 2022/07/09(土) 23:45:37.10 ID:yHOdCoxc >>338 Rust批判派があまりにも知識不足で驚いた ちなみにこちらはLinuxだがrustc(=Rustコンパイラ)だけあればコンパイルできる http://mevius.5ch.net/test/read.cgi/tech/1656285423/341
342: デフォルトの名無しさん [sage] 2022/07/10(日) 00:12:02.83 ID:VXHYDjJa >>339 SwiftとかABI stabilityを実現してるやつは仕様としてメモリレイアウトを定義して公開してるやろ http://mevius.5ch.net/test/read.cgi/tech/1656285423/342
343: デフォルトの名無しさん [sage] 2022/07/10(日) 00:13:44.27 ID:ZPTgd3k2 >>341 ["rust linker cc not found"] [検索] http://mevius.5ch.net/test/read.cgi/tech/1656285423/343
344: デフォルトの名無しさん [sage] 2022/07/10(日) 00:16:59.60 ID:CjJVLv20 まあ>>287の書いてるメモリ構造という言葉はメモリレイアウトでもデータ構造でもないのは明らかだけどな http://mevius.5ch.net/test/read.cgi/tech/1656285423/344
345: デフォルトの名無しさん [sage] 2022/07/10(日) 00:18:51.99 ID:z1Ut0loV 隔離スレ復活させないとノイズだらけできつくなってきた http://mevius.5ch.net/test/read.cgi/tech/1656285423/345
346: デフォルトの名無しさん [sage] 2022/07/10(日) 00:30:08.21 ID:tvXCky2C >>342 そのABIはコンパイル後のバイナリのフォーマットの話だぜ 今回の『気楽にコーディングできるわけでもなくメモリ構造考えなければいけないんですね』はプログラミングの際の話だから関係ない プログラミングする上でメモリ構造は考えなくていい 例えばRustの型VecやStringなども各々のがどんなメモリ構造になるかは規定も公開もない もちろんソースコードを読めば内部のデータ構造までは分かるがそれに依存してコードを書いてはいけないし依存できないよう抽象化されたインタフェースのみ規定公開されている http://mevius.5ch.net/test/read.cgi/tech/1656285423/346
347: デフォルトの名無しさん [sage] 2022/07/10(日) 00:33:22.94 ID:tvXCky2C >>345 同感 アンチ活動は別のスレでやってほしい ここ本スレでやるのはマナー違反だと思う 今後Rustへのアンチ活動は以下のスレへ書くこと Rustアンチスレ https://mevius.5ch.net/test/read.cgi/tech/1509028624/ http://mevius.5ch.net/test/read.cgi/tech/1656285423/347
348: デフォルトの名無しさん [sage] 2022/07/10(日) 01:01:37.00 ID:/Pm6re6i 複オジに絡んだ俺がバカだったわw http://mevius.5ch.net/test/read.cgi/tech/1656285423/348
349: デフォルトの名無しさん [sage] 2022/07/10(日) 01:02:48.63 ID:qjKEOyYX >>343 なるほど、 >341 >ちなみにこちらはLinuxだがrustc(=Rustコンパイラ)だけあればコンパイルできる は、比較的新しいrustを使えばgcc(リンカ)イラネってことか rustでリンカ作った方がgccのリンカよりずっと良いものになるだろうからな http://mevius.5ch.net/test/read.cgi/tech/1656285423/349
350: デフォルトの名無しさん [sage] 2022/07/10(日) 01:09:37.70 ID:ZPTgd3k2 https://mevius.5ch.net/test/read.cgi/tech/1657382429/ 隔離対象をアンチに限定しない汎用隔離スレ立てた もう全部こっちでやってくれ http://mevius.5ch.net/test/read.cgi/tech/1656285423/350
351: デフォルトの名無しさん [sage] 2022/07/10(日) 01:48:41.75 ID:LxkGLd0V >>350 おまえ低能だな そんな内容と設定ではそのスレは過疎って終わることくらい予測できるだろ? http://mevius.5ch.net/test/read.cgi/tech/1656285423/351
352: デフォルトの名無しさん [] 2022/07/10(日) 04:45:49.56 ID:T5qatPVB 荒らしてるのはLinux板の連中か。 http://mevius.5ch.net/test/read.cgi/tech/1656285423/352
353: デフォルトの名無しさん [sage] 2022/07/10(日) 08:32:10.98 ID:VKvLuEGz Cellを使っていて思ったんだが例えば trait CellUpdateWith<T> { fn update_with(&self, f: impl FnOnce(&mut T)); } impl<T: Default> CellUpdateWith<T> for Cell<T> { #[inline] fn update_with(&self, f: impl FnOnce(&mut T)) { let mut inner = self.take(); f(&mut inner); self.set(inner); } } このようにメソッドupdate_with()を用意しておけば 内部更新もわかりやすく記述できるな let foo = Cell::new(vec![1, 2, 3]); foo.update_with(|v| v.push(7)); 身代わりにself.take()でdefault値を入れてCellから取り出し self.set()でCellへ戻すという無駄な操作は最適化で消えるようだ https://godbolt.org/z/19c4EbErG http://mevius.5ch.net/test/read.cgi/tech/1656285423/353
354: デフォルトの名無しさん [sage] 2022/07/10(日) 12:00:25.54 ID:oYFJk9+G >>351 それをわざと狙ってんだろうなww いかにもやりそうなこと http://mevius.5ch.net/test/read.cgi/tech/1656285423/354
355: デフォルトの名無しさん [sage] 2022/07/10(日) 13:59:32.22 ID:blpABUiA >>354 この手の人は自分が排除されることを最も恐れてるんだよ そうならないための策ならなりふり構わず何でもやる 自分が排除される側にいる自覚がなければそんなことやらない http://mevius.5ch.net/test/read.cgi/tech/1656285423/355
356: デフォルトの名無しさん [sage] 2022/07/10(日) 19:54:18.59 ID:/ZDhY4rW >>308 糞言語で自意識過剰の公開オナニーをする信者、マジきもい http://mevius.5ch.net/test/read.cgi/tech/1656285423/356
357: デフォルトの名無しさん [sage] 2022/07/10(日) 23:37:14.97 ID:nSquZ6Rt >>308 プログラミング言語界に大革命をもたらした画期的な言語だな http://mevius.5ch.net/test/read.cgi/tech/1656285423/357
358: デフォルトの名無しさん [] 2022/07/11(月) 00:14:06.35 ID:triNevnR 15年近くc/c++触ってなくて(ずっとjava触ってた) rustの所有権とか何故こんな仕様になったのか経緯がわからなくて 最近のc11以降の仕様の?unique_ptrとかshared_ptrとかstd::moveとかstd::forward学んで (元々boost にスマートポインタがあった記憶があるけど記憶が曖昧) どうしてこう言う機能が出来たのか少しわかった 今のc++はconst 地獄だしとにかくコードが汚くなる こりゃrust の方が良いわ あと型名の付け方が好き。u32とかf32とか 昔cで書いてた頃typedefでわざわざ定義してたよ http://mevius.5ch.net/test/read.cgi/tech/1656285423/358
359: デフォルトの名無しさん [] 2022/07/11(月) 10:40:05.73 ID:1W23UOpt const 地獄 ← 判る static_cast うぜー ← 判る Rust 万歳 ← 判らん http://mevius.5ch.net/test/read.cgi/tech/1656285423/359
360: デフォルトの名無しさん [sage] 2022/07/13(水) 23:59:24.88 ID:qlTJEO+a >>353 もっと便利にできるぜ use std::cell::Cell; trait CellWithMethod<T> { fn with<R>(&self, f: impl FnOnce(&mut T) -> R) -> R; } impl<T: Default> CellWithMethod<T> for Cell<T> { #[inline] fn with<R>(&self, f: impl FnOnce(&mut T) -> R) -> R { let mut inner = self.take(); let result = f(&mut inner); self.set(inner); result } } fn main() { let foo = Cell::new(vec![1, 2, 3]); foo.with(|v| v.push(7)); assert_eq!(4, foo.with(|v| v.len())); assert_eq!(7, foo.with(|v| v[3])); assert_eq!(vec![1, 2, 3, 7], foo.with(|v| v.clone())); } http://mevius.5ch.net/test/read.cgi/tech/1656285423/360
361: デフォルトの名無しさん [sage] 2022/07/15(金) 21:39:01.85 ID:qV4GyRtM >>360 CellでVec使えるのか 何か間違って学習していた https://qiita.com/wada314/items/24249418983312795c08 > 1. Cellの中身の型はCopyをimplしていなければならない https://dev.classmethod.jp/articles/rust-smart-pointer/ > ・Cellの中の型はCopyトレイト実装が必須 https://qiita.com/usagi/items/fc329895cebd3466910e > Cell は値の "移動" によって内部可変性を実装するため <T> は Copy 可能な "値" 向けのコンテナーで、 > i32 や Copy trait を実装した何かを扱うのに"適した"コンテナーです。 https://zenn.dev/mebiusbox/books/22d4c1ed9b0003/viewer/5df75e > Cell<T> の大きな制約として, T は Copy トレイト境界があることです. 実際にはCellはCopyを要求していない やってみたら>>360のコードが動いてCell<Vec<_>>が使えた http://mevius.5ch.net/test/read.cgi/tech/1656285423/361
362: デフォルトの名無しさん [sage] 2022/07/15(金) 22:48:49.30 ID:fFdw7/F8 #[derive(Clone)]のコーナーケースに遭遇した https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=487e64c7c762fb0e015e1bc9b1267fbd http://mevius.5ch.net/test/read.cgi/tech/1656285423/362
363: デフォルトの名無しさん [sage] 2022/07/15(金) 22:50:32.95 ID:SBkpZpFk やっぱりrustcはバグが多いね http://mevius.5ch.net/test/read.cgi/tech/1656285423/363
364: デフォルトの名無しさん [sage] 2022/07/15(金) 23:12:58.85 ID:nxNpCMHU >>362 標準ライブラリのderiveは型パラメータに無条件にトレイト制約課すようになってるから derivativeみたいな制約を自分で指定できるcrateを使うと良いよ https://github.com/mcarton/rust-derivative http://mevius.5ch.net/test/read.cgi/tech/1656285423/364
365: デフォルトの名無しさん [sage] 2022/07/16(土) 00:28:56.56 ID:730D9OZt >>361 get()がCopyを要求するからってのもあるけど 古いThe BookにはCellはCopy専用・RefCellはCopy以外も使えるという説明があったので それが日本語訳とかで残ってたんじゃないかな http://mevius.5ch.net/test/read.cgi/tech/1656285423/365
366: デフォルトの名無しさん [sage] 2022/07/16(土) 23:27:56.53 ID:MG4+BxCd >>360 !Syncで参照無しならデータ競合を起こさない、という点を使った用法だな 便利だから公式サポートすればいいのにな http://mevius.5ch.net/test/read.cgi/tech/1656285423/366
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 636 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.017s