1 名前:デフォルトの名無しさん [2023/08/15(火) 22:24:39.45 ID:xzxy4cgp.net] 公式 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/
552 名前:デフォルトの名無しさん mailto:sage [2023/10/23(月) 00:13:38.68 ID:tCssLiBK.net] >>539 まあカーネルで使ってる基本的なデータ構造(赤黒木、ハッシュテーブル、双方向リスト) kref(リファレンスカウント)などは外せないからね 無理に組み合わせるとかえってキツい気がする
553 名前:デフォルトの名無しさん mailto:sage [2023/10/23(月) 05:58:05.37 ID:3382hDjx.net] >>533 実際にはCでもバッファオーバーランしないからRustでは、unsafe必要ないでしょ
554 名前:デフォルトの名無しさん mailto:sage [2023/10/23(月) 06:59:33.53 ID:8gpCEC0e.net] >>533 >使わざる終えない 昔こんな誤字よく観たな
555 名前:453 mailto:sage [2023/10/24(火) 00:55:17.36 ID:Ei0IGfb9.net] >>500 今度は逆にrustで書いたもの>>453 をcで書いてみた https://ideone.com/j5KR8Y ・参照透過性は考慮していない ・型のパラメータ化?には挑戦してない ・パターンマッチ再現?にも挑戦してない ・クロージャが欲しいところには呼び出し元の文脈を手渡して誤魔化す ・グローバル変数一個使ってノードの再利用を試みてる ・とにかくlist_qsort内部がそれっぽい感じの手順になってたらヨシ struct node { int value; struct node *next; }; struct node *list_qsort(const struct node *list) { int pivot; struct node *sorted = 0, *tail, *smaller, *rest, *a, *b; if (list) { pivot = list->value, tail = list->next; list_partition(&pivot, less_than_context, tail, &smaller, &rest); sorted = list_append(a = list_qsort(smaller), b = list_cons(pivot, list_qsort(rest))); list_available_push_all4(smaller, rest, a, b); } return sorted; }
556 名前:デフォルトの名無しさん mailto:sage [2023/10/24(火) 13:32:38.68 ID:oyxcPsiu.net] スレチ
557 名前:デフォルトの名無しさん mailto:sage [2023/10/24(火) 16:02:23.69 ID:ju9L4gE1.net] cargo 経由で rustc にコンパイルオプションを渡したいとき RUSTFLAG=hogehoge で成功はしたのですがパッケージ全体が再コンパイルされて遅いです 特定のファイルだけにコンパイルオプションを適用したいのですが cargo にはそういうオプションはありませんか?
558 名前:デフォルトの名無しさん mailto:sage [2023/10/24(火) 18:21:38.30 ID:u/7eM1yW.net] >>545 ありません
559 名前:デフォルトの名無しさん mailto:sage [2023/10/24(火) 20:07:58.68 ID:dncTx+4h.net] 大文字小文字が混在する言語って気持ち悪い
560 名前:453 mailto:sage [2023/10/24(火) 22:19:05.86 ID:yQ/jFyOv.net] >>543 c https://ideone.com/yYGR7x ・ノード再利用やめた ・若干の整理
561 名前:デフォルトの名無しさん mailto:sage [2023/10/25(水) 09:06:18.67 ID:9oOV85NF.net] >>545 試してないけど やるとしたら cmdとかterminal(shell)を2つ以上別ウィンドウで開いておいて それぞれ別のRUSTFLAG=を設定しておく(環境毎に独立なはず) 片方でbuildしたあと適用したいファイルだけ修正してもう片方でbuildするとうまくいかんかな
562 名前:デフォルトの名無しさん mailto:sage [2023/10/25(水) 10:10:31.38 ID:p3+NCv68.net] 特定のファイルにだけ適用したいコンパイルオプションて何なの?
563 名前:デフォルトの名無しさん mailto:sage [2023/10/25(水) 10:43:36.55 ID:dKf07X6i.net] crateで分割したらいけるんじゃね
564 名前:デフォルトの名無しさん mailto:sage [2023/10/25(水) 11:35:23.44 ID:CN7zqSRs.net] そらそうやろと言いたいところだが 今はcrate単位の指定はできなくてパッケージ単位のみ
565 名前:デフォルトの名無しさん mailto:sage [2023/10/25(水) 13:57:15.42 ID:0w7kqvd/.net] crate で別れてる前提で その crate を使う2つの bin (まあまあそっくりな main) を造って それぞれをそれぞれの RUSTFLAGS= で build したら うまく使い別けられました とりあえず速度は気にならないからしばらくこれで逝く アイディア呉れた人thx
566 名前:デフォルトの名無しさん [2023/10/26(木) 14:45:03.06 ID:6bJ9rmmH.net] しつもんです cargo publish のときに warning: package `hoge vN.N.N` in Cargo.lock is yanked in registry `crates-io`, consider updating to a version that is not yanked って警告が出てて意味は判るんだが cargo clean してやり直しても package 'hoge vN.N.N' が最新のものに切り替わらない 自分自身の Cargo.toml の dependencies には hoge は描かれていない どの crate が原因で hoge を要求してるのか知るにはどうすれば良い? その crate を最新のものにすれば hoge の yank されてないものを取って来てくれるとも限らない訳だが
567 名前:デフォルトの名無しさん [2023/10/26(木) 15:53:54.89 ID:wO29ziTZ.net] cargo treeを使うといいよ
568 名前:デフォルトの名無しさん mailto:sage [2023/10/26(木) 21:41:03.08 ID:pAbfpEYj.net] Rust で書かれた WebAssembly/Canvas 上の FlashPlayer のエミュレータ Ruffle の実装が 凄い勢いで進んでるけど 世界の凄腕プログラマも参戦してるみたい。 このスレで貢献してる人ひょっとしている? エミュレータ実装て武者修行になるのかな。
569 名前:デフォルトの名無しさん mailto:sage [2023/10/26(木) 23:18:45.93 ID:oN20rU1J.net] エミュレーターを作り始めるスタートは完全な仕様の資料を手にいれることで、それがないことも良くあることだから調査がしんどいんだよ。 そんで実装は仕様通りにやるだけのひたすらに地道な作業だからあまり面白味はない。 動くだけじゃなくて性能を出そうと思ったら色々と工夫の余地はあるんだけど……
570 名前:デフォルトの名無しさん mailto:sage [2023/10/27(金) 10:08:58.42 ID:d8VwEqUV.net] 古いゲーム機のエミュレータを書いたことがあるが結構面白いぞ 昔のソフトはクロックタイミングに依存することも珍しくないから、性能だけでなく再現精度にも気を配らなくちゃいけない 腕試しとしてはちょうどいいと思うよ
571 名前:デフォルトの名無しさん [2023/10/27(金) 12:30:38.77 ID:xuiID3+p.net] もっと良いサイトあったんだけど消滅してる? sunlight.cocolog-nifty.com/sunlight/2005/08/post_1ff6.html www.sm.rim.or.jp/~shishido/tick.html
572 名前:デフォルトの名無しさん mailto:sage [2023/10/27(金) 22:25:37.09 ID:2hH60kIl.net] >>557 >>558 そうですね、面白さと言う点では 当時は無かった WebGPU等の現代的な技術を 積極的に取り入れて 本家 FlashPlayer の単なるエミュレータに留まらず ブラウザWASM上の本格ゲーム・アニメプレーヤーに なりそうな所が興味を引きます。 取り敢えずは日本人として 縦書きCJK 2バイト文字列の動的表示等の 検証報告で協力できたらと考えております。 (和風ゲームのイベント表示など)
573 名前:デフォルトの名無しさん mailto:sage [2023/10/27(金) 22:44:06.00 ID:nnq2nBUF.net] web上で再発明するの好きなやつ多いよね でも失敗率高めじゃないか?
574 名前:デフォルトの名無しさん mailto:sage [2023/10/28(土) 14:23:38.78 ID:AMpKEF3U.net] 自己鍛錬で再発明するのは好きにすればいいがそれでサーチエンジンの上位を占拠するのはマジ迷惑だ
575 名前:453 mailto:sage [2023/10/28(土) 18:50:08.51 ID:U0JINWpQ.net] >>548 c https://ideone.com/Rp476I ・ノードへのポインタとしてリストを表現していた(>>548 )のを廃止 ・共用体でリストを表現したことによりBoxの位置?がRust版(>>453 )と同じに ・特に意味もなくループ文を再帰に置き換え
576 名前:デフォルトの名無しさん [2023/10/29(日) 12:47:29.07 ID:IsQ6p7Vf.net] uBlacklist が猿人検出阻止してくれるそうだ sejuku とか techacademy とか KENTA とか入れると良い
577 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 14:51:57.32 ID:fSSaeY5g.net] === 複製おじさん(通称複おじ)について === Rustスレを中心に活動し、2023年4月現在で1年以上ム板に住み着くRustacean。無自覚な荒らし。 Rustスレでは、基本的に他住民の意見を聞いて糧とすることなく、自らのコードが最善であると、ID変更自演を交えいつまでも主張し続ける。 同スレで「所有権が複製される」という違和感のある表現を、「違和感がある」とする他住民の意見をすべて否定してしつこく擁護し続けたことから、「複製おじさん」というあだ名が付けられた。 それ以外のム板スレでは、基本的に他住民の意見を聞いて糧とすることなく、Rustこそが最善であると、ID変更自演を交えいつまでも主張し続ける。 その基本戦術は、「GC言語は遅い」の一声でC/C++/Rust以外の言語を否定し、残ったC/C++は安全ではないので、Rustが最善であるとするもの。 しかしながら、Rust以外の言語に関しては、正当な批判を展開するのに十分な知識を持っているとは言いがたい。 本スレPart1では、C++の問題点を指摘しようとして多数の誤り・知識不足を露呈することとなった。特にしつこく食い下がったのが「動的ディスパッチ」に関する誤解である。 https://mevius.5ch.net/test/read.cgi/tech/1677286186/786-799(ID:Evbafc70とID:RiLc+pIfが複製おじさんであると考えられている) 要約すると、通常「条件分岐」と呼ばれるものを「動的ディスパッチ」と呼ぶのが正しいと主張し続けたのである。 常識的にはあり得ない誤解だが、提示されたC++のコードが自らの主張(C++にはパターンマッチが無い)に不都合であると感じたためか、C++のコードを正しく読み解くことができないにもかかわらず脊髄反射的に否定してしまい、その根拠として誤った論理をこじつけてしまったものと思われる。 ちなみにこの後、同種の誤解を持って書き込むID:wHEiYRW7(これはID使用歴的に複製おじさんとは考えにくい)に対して、正しい理解に基づく指摘を行う単発IDが複数出現するが、この中にも複製おじさんが多数含まれていると考えられている。 このように自分の誤りを認識した場合、それを認める書き込みは決して行わず、別人の振りをして最初から正しく理解していた体を装うのも複製おじさんの特徴である。
578 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 20:56:04.34 ID:uUmiO3VU.net] Generatorはコードがごちゃっとしてたからgen fn/blockはありがたいな
579 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 22:49:04.51 ID:Q6dMbwrG.net] 2024 editionから?
580 名前:デフォルトの名無しさん [2023/11/04(土) 04:29:37.91 ID:xhYE5yZM.net] Rustの学習を始めたが、所有権面倒くさい。まあでも安全性は高められそうな感じはする。
581 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 12:29:53.92 ID:eFHrirh7.net] Better C的なRustが欲しい C++と張り合って仕様が複雑になってる
582 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 12:45:03.68 ID:whQSHNtc.net] >>569 それはZigじゃない? とはいえ、所有権いい感じに見てくれない言語を今更betterと言えるかというと微妙か。
583 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 13:26:02.22 ID:ocaBqo/v.net] Rust は別に C++ と張り合ってなんかいないよ。 現実に使うものはどうやったってどこかで汚くなるってだけ。 綺麗なものは使われてないものだ。
584 名前:デフォルトの名無しさん [2023/11/04(土) 14:22:45.66 ID:nDDUhOSB.net] >>569 Odinはいかが? https://odin-lang.org/
585 名前:デフォルトの名無しさん mailto:sage [2023/11/05(日) 00:55:20.60 ID:Frni44mO.net] >>569 Carbon
586 名前:デフォルトの名無しさん mailto:sage [2023/11/05(日) 13:27:00.92 ID:bq/z7Mod.net] >>567 「gen」予約keyword化はそうだね
587 名前:デフォルトの名無しさん [2023/11/09(木) 15:19:57.39 ID:j64EPVX0.net] すまんが、VSCode上から/examples下にあるものをデバッグしたい場合ってどうやんの? 他人の作ったクレートのコードを読む上で、これを楽にできると個人的にはありがたいんだけど・・・・
588 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 22:37:41.41 ID:vNSbYVSe.net] バージョンと拡張機能によりそうだけど自分の環境(Windows)だと examples内でもfn main()の上に |> Run | Debug みたいなinlayが表示されてとりあえずそこからデバッグ実行できた 設定作ればほかの起動方法もあるはず たぶんrust-analyserの機能だけどデバッガは環境依存だからわからん
589 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 02:38:23.29 ID:O0gb6uIB.net] gen はいわゆる協調スレッドなのか。 言語機能として取り込むにはちょっと豪華すぎる気もするな。
590 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 04:55:58.85 ID:2kP6dQwH.net] genはasyncと同じでコルーチンだよね? そしてasyncと同じく単純な状態マシンで実装だよね?
591 名前:デフォルトの名無しさん [2023/11/12(日) 07:45:09.87 ID:sBWcqg0h.net] >>576 ありがとう!バッチリできたぜ!!!
592 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 09:05:18.31 ID:7FyJ/l9p.net] TikTok LiteでPayPayやAmazonギフトなどに変換可能な4000円分のポイントをプレゼント中! ※既存TikTokユーザーの方はTikTokアプリからログアウトしてアンインストールすればできる可能性があります 1.SIMの入ったスマホ・タブレットを用意する 2.以下のTikTok Litのサイトからアプリをダウンロード(ダウンロードだけでまだ起動しない) https://lite.tiktok.com/t/ZSNfDoDFY/ 3.ダウンロード完了後、もう一度上記アドレスのリンクからアプリを起動 4.アプリ内でTikTok未使用の電話番号かメールアドレスを使用して登禄 5.10日間連続のチェックインで合計で4000円分のポイントゲット ポイントはPayPayやAmazonギフト券に変換可能です! 家族・友人に紹介したり通常タスクをこなせば更にポイントを追加でゲットできます。
593 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 11:30:27.32 ID:cviedAAA.net] >>580 既にやってるよ
594 名前:デフォルトの名無しさん [2023/11/14(火) 12:58:29.06 ID:SRCspH78.net] https://crates.io/search?q=arete 0なんだが
595 名前:デフォルトの名無しさん [2023/11/19(日) 15:31:52.34 ID:J3g/JpQ/.net] rust初心者です。 cだとポインタに対してキャストすることで完全にプログラマ任せのキャストが出来ます。 例えば文字列を参照するポインタを強引に数値として解釈させるなど、好きなように出来ます。 rustでは簡単に調べたところparse().unwrap()などが必要だそうです。 rustはcのようにバイナリフォーマットをプログラマ任せにして自由にキャストさせる習慣はないということでしょうか?
596 名前:デフォルトの名無しさん [2023/11/19(日) 16:23:14.27 ID:/G2k3fWt.net] あるよ
597 名前:デフォルトの名無しさん [2023/11/19(日) 16:29:48.57 ID:eJPqaRZx.net] #[repr(C)] as *const T as *mut T as usize bytemuck slice::from_raw_parts
598 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 16:46:38.60 ID:ib2hIQe1.net] バイナリや文字列と内部表現・の相互変換(シリアライズとデシリアライズ)ならば Rustではdeser crateファミリーを使って専業分離することが多いね
599 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 18:17:50.06 ID:b3b61WiC.net] シリアライズ関連のクレートを使った方が楽だし、もうちょっと簡易的にやる場合でも from_le_bytes などの組み合わせで安全にやれるから不必要にプログラマの責任で管理するべきではないよ。 C でもいまどきは高レイヤのプログラムならそんなに気軽に未定義の型変換はしない。(もっとも、高レイヤではあまり C を使わないけど)
600 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 18:43:57.48 ID:ib2hIQe1.net] ごめん、アホなスペルミスしてる deserでなくてserde あとserde_bytesやbincodeを併用
601 名前:デフォルトの名無しさん [2023/11/19(日) 23:58:07.78 ID:J3g/JpQ/.net] 少し調べてより明確に言語化出来ました。 Rustはゼロコストのserderができますか? Cだとしばしばそれができます。構造体の要素次第ですが。 で、調べてみるとrkyvというフレームワークが近いことを可能にしているようです。 ゼロコピーと謳っていますが、何らかの演算コストが生じているのかどうか。 Cなら構造体を注意深く設計すればキャスト一発で実行時コストゼロでserderが完了するのです。
602 名前:デフォルトの名無しさん [2023/11/20(月) 02:05:15.84 ID:ilBq5gGe.net] >>589 >Cなら構造体を注意深く設計すれば なんでそのコストを無視するんだい?
603 名前:デフォルトの名無しさん [2023/11/20(月) 02:16:16.40 ID:UjbzCz3W.net] >>590 実行時コストじゃないからです。 例えばRustのゼロコスト抽象化という概念もあくまで実行時コストがゼロであることを意味しているはずです。
604 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 02:16:45.62 ID:K0+PyRHv.net] #[repr(C)]付けてstruct/enum/unionをCと同じ使い方すればC互換のレイアウトになるはず
605 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 06:49:29.19 ID:dNsGQu4G.net] >>589 Cと同じことがしたいだけならrepr(C)で構造体定義して std::mem::transmuteでキャストすればいい rkyvみたいなフレームワークはもっと高度なデータ型(ハッシュマップとか)で同じことをやるためのもの
606 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 08:53:23.51 ID:LwcosZwN.net] 抽象度の高いレイヤを挟んでもかなり最適化で消えるよ。 逆に自由なキャストのコストはゼロではない。 ハードウェアの癖、処理系の癖を理解している人がうまくチューニングすれば性能はあがることも多いけどキャストして直接に読み替えたら実行時コストが低くなるとは限らない。
607 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 13:51:58.80 ID:MS7hPbOQ.net] >抽象度の高いレイヤを挟んでもかなり最適化で消えるよ。 それはもちろん判ってて その上で厳密にゼロじゃないから問題視してんじゃん
608 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 15:34:39.51 ID:JXHwx0JF.net] 具体的にRustを使うメリットよりデメリットが上回る例があるならそれを出さないと話がわからない 色んなバイナリプロトコルもRustで実装されて問題になっていない
609 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 17:27:20.27 ID:cTETCu/a.net] transmuteだとalign合わせるためにコピーする場合がありそうだから 本気でCと同じゼロコストで読み替えするならポインタ(参照じゃない)をとって as *const T(as *mut T)で目的の型にキャストして参照(&T, &mut T)に戻す感じかな どうせunsafeだからunion使う方がいいかもしれないけど
610 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 17:54:17.33 ID:PG0EBfXZ.net] Cから移植する場合でtagged unionをうまく移植する方法はないだろうか unsafe使わずに struct tagged_value { enum tag t; union { hoge h; fuga f; } u; }; みたいなの
611 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 18:11:32.44 ID:NaWZknyA.net] >>598 enumで
612 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 18:17:00.50 ID:ieYqPgSw.net] >>595 最適化の話は「どちらにしてもゼロとは限らない」という話のための前ふり。 仮にその場所に限ってはゼロになったとしても周囲の最適化の足を引っ張ることもある。 総合的な速さを出すには諸々を加味したチューニングが必要なので単純にキャストしたほうが速いとは考えるなというのが主旨。 もちろん諸々を考慮して検証した上で実際に速くなることが確かめられるならそれを否定したりはしないよ。割に合うことは少ないとも思うけど。
613 名前:デフォルトの名無しさん [2023/11/20(月) 21:13:04.59 ID:ojqzhkRS.net] ちゃんと考えるよ。 角度とか
614 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 23:02:22.90 ID:QHUUbGYT.net] 重要なのは、Rustで書くと遅くなる(コストがかかる)パターンを、実際に発見できたのかどうか? もしそのようなパターンを発見できて、(Cによる)速い方法でも安全性に問題がないのならば、 Rustの歴史ではそれを(必要なら)unsafeで記述してライブラリの中に安全に閉じ込めてきた そのためRustで一般プログラマーがunsafeを使わずに記述しても、ほとんどのケースでCと同等の速さが出る
615 名前:デフォルトの名無しさん [2023/11/21(火) 04:05:24.41 ID:60zWiP9n.net] 個人的な懸念点は処理のゼロコピー化においてCに劣るのか?という点 Rust界隈でゼロコピーフレームワークが色々あるがどういう工夫が行われているのか 調査は時間がかかりすぎるからやらないw
616 名前:デフォルトの名無しさん [2023/11/21(火) 04:13:54.83 ID:60zWiP9n.net] データ転送はCPU上の演算と比較してかなり遅い処理なので ゼロコピーで劣ると一部の処理でかなり遅くなる そしてベンチマーク系のプログラムではゼロコピーはあまり問題にならない。
617 名前:デフォルトの名無しさん [2023/11/21(火) 04:16:28.76 ID:60zWiP9n.net] ゼロコピーが問題になるのはserder、通信 あとたぶんOSの実装でも問題になるはず だから数学的計算というよりはシステム間の垣根を超えるようなところで問題になる RustがベンチマークでC並といっても、あくまで数値計算系の話
618 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 08:42:33.89 ID:UPhRR3yr.net] ゼロコピーってのはオリジナルのバッファ以外には追加でヒープアロケーションをせずに処理をするという意味
619 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 10:07:46.27 ID:ZzleWc4x.net] ウザイからttf_parserのコードでも読んでくれば
620 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 11:00:12.68 ID:HSO31doi.net] unsafe という名前が誤解の元になってる unsafe に描く内容って結局安全な内容しか描いてはいけない訳だ そして unsafe は使ってはいけない機能ではなくむしろ積極的に使って良い機能
621 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 11:55:27.06 ID:pNsPVZam.net] こういうやつがいるからこそunsafeという名前に価値があるんだよな
622 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 12:57:54.74 ID:4vFkathr.net] >>605 それらRustで書くことで遅くなった事例がない むしろ例えばCDN世界トップのCloudflareは Cで書かれたnginxを全面的にRustで作り直すことで CPUリソースとメモリリソースを1/3に削減することに成功している
623 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 15:25:53.24 ID:OibZ9mzY.net] Cloudflareのやつはnginxがスレッドベースで処理をブロッキングしてしまう(CPU時間とメモリを占有してしまう)から マイクロスレッドで作り直した=基本設計を大きく変更したというだけで、Rustだからパフォーマンスが向上したというわけではない
624 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 16:18:31.31 ID:Pb5WKpvw.net] stdをunsafeで検索するとUnsafeCellしか出てこなくて unsafeな関数の名前がほとんどuncheckedなのは let x = unsafe { do_something_unsafe() }; だとアホっぽいからかな
625 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 18:24:54.78 ID:Fzh9NpIU.net] 検索方法が間違ってる そしてuncheckedはunsafeとは意味が違う
626 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:10:58.28 ID:lumDzvUR.net] >>611 そこではなく 杞憂の>>603 が言うところのゼロコピーやゼロコストはCとRustで同様に実現できているから 新たなシステムはCを使わずにRustで書いたという話ではないか
627 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:28:16.17 ID:u3FDf3nL.net] 外部入力をtransmuteとか地雷臭がハンパない どうぞご安全に〜
628 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:39:45.33 ID:lumDzvUR.net] transmute使わなくてすむsafeなライブラリ関数が揃ってるからね
629 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 09:15:59.95 ID:rKTwm3uz.net] Rust って同じ変数名なのに違う型に出来るよね? 同じスコープで再定義出来ると言うか上書き出来る 名前が変わらないから便利って思うかも知れないが 気を付けてソース観ていないと途中で型が変わってるやん!ってなる なかなか嫌な構文だね 可読性低下しない?勘違いしそう
630 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 09:18:00.86 ID:rKTwm3uz.net] あと上書きされたとき前のリソースは上書きされたタイミングで消えてない 明示的に drop していれば消えるがしなかったら実は生きたまま 迷惑仕様じゃないかな
631 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 10:20:51.65 ID:ytuM+CNS.net] >>618 同じスコープ内でシャドウィングする時は意味的に同じものを入れるようにする 前のリソースがすぐにドロップされないのはシャドウィング時にそのリソースへの参照を使う事で不要なアロケーションを避けられるから
632 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 12:38:39.68 ID:EEEndPKs.net] シャドウイングされた時に勝手に消える方が迷惑仕様だな その時点で他から参照されてるかもしれないし
633 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 13:46:10.54 ID:V6cVkJ+M.net] >>617 Rustはプログラマーに優しい強い静的型付けの言語だから型が違えばエラーになるため混乱もなく大丈夫 また、型変換するたびに別の変数名にしなければいけなかった言語よりも便利でプログラミングも快適だよ
634 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 16:27:51.72 ID:81rqCYd0.net] Rustの欠点は誰も使ってない所だけ
635 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 17:24:40.07 ID:4EAT4Ovg.net] >>622 どうしてそんな悲しいこと言うの!
636 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 18:44:41.46 ID:vlc4nTzz.net] 誰も使ってないのってカッコいいな
637 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 23:55:37.33 ID:B979bnCG.net] 俺だけが知っている
638 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 09:12:21.52 ID:k38CbPq9.net] ユーザーが少ないのはアドバンテージだってポール・グレアムも言ってる。
639 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 09:20:04.49 ID:OE1+8Rl8.net] GAFAMで使われるようになった時点で言語として消え去る可能性は十分下がったし 別にこれ以上使う人増えなくてもいいんじゃないかな 日本のSIerにまで広まるなんてまずないだろうし
640 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 10:05:44.56 ID:Deg4O8Si.net] 言語じゃないけどBlenderみたいにいつの間にか覇権を取ってたりすることもあり得る
641 名前:デフォルトの名無しさん [2023/11/26(日) 11:39:45.82 ID:d/KzVdDP.net] おまえが使ってるのに誰も使ってないって可笑しなことを言うのな もしかしておまえも使ってないだろ?正直に言え
642 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 11:42:35.06 ID:Deg4O8Si.net] 「俺の周りじゃ」
643 名前:デフォルトの名無しさん [2023/11/26(日) 12:18:50.10 ID:d/KzVdDP.net] ぼっちってこと?
644 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 12:23:12.23 ID:oOwLuMql.net] Rust「きゃー、私のために争わないで
645 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 12:32:50.97 ID:iMOX0Yuj.net] クズがこっちに移動してきたか まかせろ
646 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 13:04:33.25 ID:oOwLuMql.net] crateのバージョンが1.0になってないのが多いから、まだまだだなーって思う
647 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 02:23:02.91 ID:hnitA9Px.net] ぼっちざRust
648 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 03:19:17.53 ID:shAL5QFI.net] >>635 ちょっとかっこいいじゃん
649 名前:デフォルトの名無しさん [2023/11/27(月) 10:05:45.61 ID:7/k6/GSg.net] 草 https://www.youtube.com/watch?v=i-fbsgTWM5Q https://www.youtube.com/watch?v=AVKkhpGsXoI https://www.youtube.com/watch?v=ylxlLa9X_O0 https://www.youtube.com/watch?v=LqmtSQ8tmzg
650 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 08:31:02.24 ID:t7+ip2Xg.net] Rustって名前が良くない
651 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 08:45:48.68 ID:ruCnqVCc.net] Cナントカじゃそれこそカビが生えてる
652 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 08:34:26.30 ID:JMjzgwiz.net] >>638 go-langよりはマシ