[過去ログ]
Rust part24 (1002レス)
Rust part24 http://mevius.5ch.net/test/read.cgi/tech/1716759686/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
1: デフォルトの名無しさん [sage] 2024/05/27(月) 06:41:26.82 ID:T4AFD1f4 公式 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 part23 https://mevius.5ch.net/test/read.cgi/tech/1708677472/ http://mevius.5ch.net/test/read.cgi/tech/1716759686/1
973: デフォルトの名無しさん [] 2024/07/25(木) 22:41:22.06 ID:zdgCFOr2 クレートではないけれど今日リリースのRust 1.80でLazyCell, LazyLockが安定版に入ったよ グローバルな変数を外部クレート無しで書きやすくなる http://mevius.5ch.net/test/read.cgi/tech/1716759686/973
974: デフォルトの名無しさん [sage] 2024/07/25(木) 22:49:30.69 ID:9YYk7vP+ >>973 それ、OnceCell使ってたコードは全部置き換えた方がいい奴? http://mevius.5ch.net/test/read.cgi/tech/1716759686/974
975: デフォルトの名無しさん [] 2024/07/25(木) 23:18:37.32 ID:zdgCFOr2 >>974 自分はそれを言えるほど詳しくないけど、必ずしも必要ではないと思う 依存クレートを減らせる点で嬉しいし、今から書くコードでは新しいものにして良いと思うけど、今使ってるものをすぐに置き換える必要があるとまでは思わない 特にライブラリを作ってる場合は、rustcを今日リリースされたばかりの最新バージョンに上げないとライブラリをビルドできなくなるということなので、もう少し待った方が良いかもしれない http://mevius.5ch.net/test/read.cgi/tech/1716759686/975
976: デフォルトの名無しさん [sage] 2024/07/26(金) 00:25:09.02 ID:/65SSmn2 OnceLockからLazyLockへ移行すると 変数宣言と初期化関数が離れていた可読性の問題が解決するとともに 例えばget_or_initを一箇所にするために一つ関数を用意したりするなどしていた手間も省けるようになるね そして何よりも最大のメリットはDerefによりアクセスできる利便性 http://mevius.5ch.net/test/read.cgi/tech/1716759686/976
977: デフォルトの名無しさん [sage] 2024/07/26(金) 23:32:15.42 ID:/65SSmn2 とりあえず定番のこのあたりを置き換えた static RE: LazyLock<Regex> = LazyLock::new(|| Regex::new("...").unwrap()); static SE: LazyLock<Selector> = LazyLock::new(|| Selector::parse("...").unwrap()); http://mevius.5ch.net/test/read.cgi/tech/1716759686/977
978: デフォルトの名無しさん [sage] 2024/07/27(土) 11:02:49.38 ID:WfV9QQMJ LazyLockよさそうね http://mevius.5ch.net/test/read.cgi/tech/1716759686/978
979: デフォルトの名無しさん [sage] 2024/07/27(土) 18:38:25.11 ID:U5WpGSyZ 俺の今日のハマりポイントを紹介 bindgenにC++のコンストラクタを作らせると、データが壊れる よく調べたら公式ドキュメントのConstructor semanticsに書いてあった https://rust-lang.github.io/rust-bindgen/cpp.html コンストラクタを抜けたとき、C++とちがってRustは値をムーブしちゃうので struct内部を参照したポインタが変なところを参照してバグる http://mevius.5ch.net/test/read.cgi/tech/1716759686/979
980: デフォルトの名無しさん [] 2024/07/27(土) 19:30:58.99 ID:s18eFGvS C++も部分的に使えるとはいえ、FFIするならCのAPIにしておく方が無難な気はする http://mevius.5ch.net/test/read.cgi/tech/1716759686/980
981: デフォルトの名無しさん [sage] 2024/07/27(土) 20:04:50.53 ID:U5WpGSyZ >>980 bindgenはFirefoxがプロダクトでたくさん使ってるって聞いて、いけると思ったんだ Firefoxは大半がC++だから http://mevius.5ch.net/test/read.cgi/tech/1716759686/981
982: デフォルトの名無しさん [] 2024/07/28(日) 15:27:45.35 ID:v6kdbv5j >>978 LazyLockさようなら に観えた http://mevius.5ch.net/test/read.cgi/tech/1716759686/982
983: デフォルトの名無しさん [sage] 2024/07/28(日) 15:29:40.57 ID:v6kdbv5j >>979 RustとC++は相性最悪 RustとCは相性良いバッチリ http://mevius.5ch.net/test/read.cgi/tech/1716759686/983
984: デフォルトの名無しさん [sage] 2024/07/30(火) 01:24:35.90 ID:xgbf/AIH >>979 この件って、RustはC++と比べて無駄にムーブするから遅いってこと? http://mevius.5ch.net/test/read.cgi/tech/1716759686/984
985: デフォルトの名無しさん [sage] 2024/07/30(火) 06:04:09.29 ID:RHAjweCG 無駄な移動は消える cargo asmで生成コードを見ることでそれを確認できる 移動前と移動後のアドレスを表示させて最適化を阻害することで元は別々となる例も確認できる http://mevius.5ch.net/test/read.cgi/tech/1716759686/985
986: デフォルトの名無しさん [] 2024/07/30(火) 12:06:12.26 ID:tiWzrJ23 >>984 >コンストラクタを抜けたとき、C++とちがってRustは値をムーブしちゃうので >struct内部を参照したポインタが変なところを参照してバグる って書いてるのに、読解力無い人? http://mevius.5ch.net/test/read.cgi/tech/1716759686/986
987: デフォルトの名無しさん [sage] 2024/07/30(火) 19:02:27.28 ID:dzXOiSL/ >>985 移動じゃなくてムーブね ここまでのレスで使われてる述語を踏襲すればいいよ http://mevius.5ch.net/test/read.cgi/tech/1716759686/987
988: デフォルトの名無しさん [sage] 2024/07/30(火) 20:13:33.28 ID:VUdF4pDl >>985 最適化のかかり具合でバグが消えたり現れたりする嫌なパターンだな http://mevius.5ch.net/test/read.cgi/tech/1716759686/988
989: デフォルトの名無しさん [sage] 2024/07/30(火) 20:41:43.84 ID:+5mpqNgW >>986 Rustを使えばそんなバグは起きない 参照のライフタイムは参照先より長くなることがコンパイル時点で保証される >>988 Rustならばそこでバグは起きようがない http://mevius.5ch.net/test/read.cgi/tech/1716759686/989
990: デフォルトの名無しさん [] 2024/07/30(火) 22:41:22.15 ID:GjQxUZ/0 >>989 本人じゃないのに出しゃばらせて頂きますが…。 Rust単体じゃなくて、C++との相性問題ですよ。相性最悪って書いてるんだから。 起きようがないじゃなくて、実際に起きてるらしいじゃないですか。 最適化で治るのなら大したことじゃなくても、デバッグ時にハマるの確実な類のバグ。 将来的に全部Rustで書けば起きないような問題も、過渡期の今は良く起きます。 「Rustを使えば」「Rustなら」。 そうでしょうけど、実際問題ライブラリがなければ既存のC/C++ライブラリ使う場面は多々あるでしょう。 (枯れたライブラリならなおさら) これはRustに限らず、後続の言語全てが抱えている問題です。 http://mevius.5ch.net/test/read.cgi/tech/1716759686/990
991: デフォルトの名無しさん [] 2024/07/30(火) 22:49:06.91 ID:MqLM+D1V 最適化じゃなくて単に移動の問題 Box::newで要素を直接ヒープに作れない (いちどスタックに作られてからコピーされる) のと同じで、コンストラクタを抜ける前に構造体が maybeuninit::assume_init で移動する その上で構造体のアドレスがC++のメソッドにthisポインタとして渡される際に問題を引き起こす、というように思える だとすると最適化の有無は関係なく起こる気がする ついでにいえば >>987 もあまり意味のない発言で、移動はムーブの訳語でもある (例えばC++の仕様の訳語に移動コンストラクタという表現がある) し、そもそもこの問題はムーブセマンティクスによるものでもない これはStringやVecが持つリソースを所有権ごと移動することで効率的に別の変数に割り当てるもので、構造体のアドレスのようなローレベルなものとは違うかと http://mevius.5ch.net/test/read.cgi/tech/1716759686/991
992: デフォルトの名無しさん [] 2024/07/30(火) 22:59:00.85 ID:MqLM+D1V 移動とムーブが仕様として別物だというなら、移動は英語でどう表現されてるんだ? http://mevius.5ch.net/test/read.cgi/tech/1716759686/992
993: デフォルトの名無しさん [sage] 2024/07/30(火) 23:00:06.83 ID:L/ylOhaJ >>990 それはRust単体では全く発生しない問題だね C++とRustを併用する時にRustの知識を持たない人がハマるという話 FFI部分は両者の概念と挙動の違いの知識を持った人が作るべきだね http://mevius.5ch.net/test/read.cgi/tech/1716759686/993
994: デフォルトの名無しさん [sage] 2024/07/30(火) 23:13:56.95 ID:EnloT7kO >>979 >>値をムーブしちゃうのでstruct内部を参照したポインタが変なところを参照してバグる Rustでそのような自己参照はムーブでライフタイム切れとなるためバグは発生しなくて 自己参照を保ちたいならば値がムーブしなければよくて 値がムーブしないためにはスタック上でそのまま使うかヒープ上に確保して使えばよくて それを保証するためにRustではPinという枠組みがあって安全に取り扱えるようになってるよ http://mevius.5ch.net/test/read.cgi/tech/1716759686/994
995: デフォルトの名無しさん [] 2024/07/30(火) 23:19:18.00 ID:MqLM+D1V >>994 bindgenの作者に言ってあげればいいと思うよ ついでに改善したコードをPRしてコントリビュートしてみてはどうだろう 使用者のミスを擦るよりもずっと有意義なはず http://mevius.5ch.net/test/read.cgi/tech/1716759686/995
996: デフォルトの名無しさん [] 2024/07/30(火) 23:48:00.88 ID:dZ3/RfBM 同意 http://mevius.5ch.net/test/read.cgi/tech/1716759686/996
997: デフォルトの名無しさん [] 2024/07/31(水) 11:32:49.64 ID:yHR2oE13 結合が密過ぎないかこの言語 http://mevius.5ch.net/test/read.cgi/tech/1716759686/997
998: デフォルトの名無しさん [] 2024/07/31(水) 11:35:31.65 ID:yHR2oE13 >将来的に全部Rustで書けば起きないような問題 さっさと仕事しろおまいらってことですね判ります http://mevius.5ch.net/test/read.cgi/tech/1716759686/998
999: デフォルトの名無しさん [] 2024/07/31(水) 12:10:03.24 ID:yHR2oE13 >>985 Pin http://mevius.5ch.net/test/read.cgi/tech/1716759686/999
1000: デフォルトの名無しさん [] 2024/07/31(水) 12:10:59.00 ID:yHR2oE13 Pin<Arc<T>> http://mevius.5ch.net/test/read.cgi/tech/1716759686/1000
1001: 1001 [] ID:Thread このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 65日 5時間 29分 33秒 http://mevius.5ch.net/test/read.cgi/tech/1716759686/1001
1002: 1002 [] ID:Thread 5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《UPLIFT会員の主な特典》 ★ 5ちゃんねる専用ブラウザからの広告除去 ★ 5ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 4 USD/mon. から匿名でご購入いただけます。 ▼ UPLIFT会員登録はこちら ▼ https://uplift.5ch.net/ ▼ UPLIFTログインはこちら ▼ https://uplift.5ch.net/login http://mevius.5ch.net/test/read.cgi/tech/1716759686/1002
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.011s