1 名前:デフォルトの名無しさん mailto:sage [2021/04/02(金) 21:38:04.11 ID:L7IeSfpL.net] Mozilla発のRust言語のスレ 公式 https://www.rust-lang.org/ https://blog.rust-lang.org/ https://github.com/rust-lang/rust Web上の実行環境 https://play.rust-lang.org 日本語の情報 https://rust-jp.rs/ 前スレ Rust part9 https://mevius.5ch.net/test/read.cgi/tech/1598112455/
609 名前:0:20.99 ID:vZYCxDQa.net mailto: >>594 Windows専用のアプリが作りたいならC#でも使えばいいと思うけど... [] [ここ壊れてます]
610 名前:デフォルトの名無しさん [2021/05/13(木) 19:30:58.76 ID:vZYCxDQa.net] おっとミスって2回書き込んでしまった 失礼
611 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 20:59:04.54 ID:vzWwtH6K.net] >>590 そういう技術者にも射撃練習とかやらせるのだろうか?
612 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 21:40:48.09 ID:NNemQTGQ.net] >>595 もうメジャーな用途で使われてんのか
613 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 21:45:54.80 ID:vzWwtH6K.net] windowsもそろそろNTカーネルを捨てる時期が来るだろうし色々模索はしてるんだろうな
614 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 21:57:03.92 ID:WjgS+eLl.net] もし仮にNTカーネル捨てたとしてLinuxカーネル一択だと思うがな
615 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 22:08:50.47 ID:vzWwtH6K.net] Linuxへの接近はここ数年目立ってるし無くはない話だな 独占市場と過去の互換性を捨てきれるか 仮想環境で過去の互換性を維持することも考えられる
616 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 08:10:59.62 ID:FBkeGRqg.net] >>604 NTカーネル捨てるのはビジネスとして有り得ない。 せいぜいwsl路線を強化してlinuxカーネルを取り込んでいく方向だろ。
617 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 08:37:43.19 ID:BI4FO4HO.net] カーネルを捨てて切り替えるとか出来るわけないだろ
618 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 08:52:11.24 ID:9b8NT0Ot.net] 3才児が「ぼくはうちゅうひこうしになるんだ!」って言ってるようなもんだから生暖かく見守ってやれ
619 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 10:22:28.00 ID:6SQ932Rj.net] OSカーネルに対するコンプレックスがすごい人がいるんだろ。 この前のlinuxドライバに関する議論でもそういうの感じるわ
620 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 11:10:24.23 ID:bMDjGf5Y.net] rustがgolangより人気が出ると思っていいですか?
621 名前:デフォルトの名無しさん [2021/05/14(金) 11:14:13.19 ID:5xLewDJ4.net] >>609 Goはガーベッジコレクションがあるから?
622 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 11:29:33.68 ID:6SQ932Rj.net] GCとランタイム速度に困ったことのある奴だけ気にすればええ。
623 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 13:23:04.93 ID:TMXA3cLH.net] goとrustどっちが良いか迷うならgoやっといた方が潰しが効くと思う 自分はrust好きだからrust使うが
624 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 14:57:53.07 ID:85G96vHL.net] 両方やっとけ
625 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 15:16:48.50 ID:678S/iU6.net] なんでマイナー言語のはずのgoがよく言及されるようになったのかと思っていたら、AWSで使える言語の一つになっていた。 Azureでも使えるようだ。
626 名前:デフォルトの名無しさん [2021/05/14(金) 15:45:19.02 ID:WB7bczPS.net] goがマイナー。。。..
627 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 15:46:03.80 ID:BI4FO4HO.net] サーバープログラムみたいな閉じた環境で、出来るここまでと決まってて 要らないこと考えたくないなら制約された言語選んだほうが良いかもな
628 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 15:47:17.23 ID:6SQ932Rj.net] goでほとんど問題ないんだが、それだとrustの出番なくなっちゃうからね。
629 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 16:15:48.73 ID:1T0ViQH9.net] Go言語がマイナーならこの言語はどんだけマイナーになっちゃうのよ
630 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 16:25:56.91 ID:Z0ePaP6y.net] goとrustの違いが分からないような知識量ならgoやった方が不幸にならないかと
631 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 16:48:29.92 ID:678S/iU6.net] 参照型はローカル変数にだけ入れて一時的な目的だけに使うことに徹してスクリプト言語の様な書き方だけに専念すればRustはスクリプト言語であるかのように使えて、習得は難しくないかも。 参照型を構造体の中に入れようとしたとたんCやC++では考える必要の無かった難しい問題が生じる。
632 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 17:00:31.58 ID:dvkZe6EK.net] メジャー言語 c java vba
633 名前:デフォルトの名無しさん [2021/05/14(金) 17:40:01.47 ID:N2rlLeCr.net] Rustを勉強したら低レベルが理解出来る!!!わけねえだろ https://www.akiradeveloper.com/post/learn-rust-and-low-level/
634 名前:デフォルトの名無しさん [2021/05/14(金) 19:36:04.21 ID:5xLewDJ4.net] 例えばWeb系ならばRustがベスト WasmでGC抱える言語をわざわざ選ぶメリットないからね
635 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 19:44:16.91 ID:6SQ932Rj.net] こういう詐欺師が普通におるからrustは信用できんわ
636 名前:デフォルトの名無しさん [2021/05/14(金) 19:51:45.41 ID:WB7bczPS.net] rustに対するコンプレックスすごい人いるね
637 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 20:26:02.54 ID:0Bqgd+6M.net] 詐欺師はどこにでもいるからな とはいえ、webならwasmは正しくないとは思うがwasmならrustは結構正しいと思う
638 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 20:32:01.67 ID:6SQ932Rj.net] wasm,rustでまともに開発してたら絶対そんなこと思わんわ。。どいつもこいつも馬鹿すぎる
639 名前:デフォルトの名無しさん [2021/05/14(金) 20:40:33.59 ID:WB7bczPS.net] それで、どんなまともなものを作っているんですか
640 名前:デフォルトの名無しさん [2021/05/14(金) 20:46:14.11 ID:5xLewDJ4.net] >>624 とこが詐欺? あなたはWebブラウザ上のWasmでRustではなくGoを用いているのですか?
641 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 21:18:15.11 ID:TMXA3cLH.net] >>627 それはあなたがまともにrust使えてないだけなんじゃないですかねぇ
642 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 21:22:56.09 ID:yxEaYkUD.net] 話が具体的で説得力がある
643 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 21:38:43.40 ID:2w1FBHD8.net] >>572 形式的に書けているのは構文規則だけで 意味規則は自然言語で書かれているやんけ
644 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 22:59:38.34 ID:R2Ezzb7N.net] 「Rustはスクリプト的に書ける」とかいう謎の言葉言う奴沢山いるけどなんぞ? 同一人物か?
645 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 23:07:50.74 ID:TMXA3cLH.net] 我々が知らないところでevcxrが流行ってるのかもしれない
646 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 23:23:46.43 ID:72ZodHJE.net] google謹製のREPLね エベクサ?
647 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 02:09:59.05 ID:BphhllcO.net] >>633 Rubyと同じようなメソッドチェーンを使ったコードを見かけたから。
648 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 03:17:16.69 ID:vuo6fbRn.net] ドットでメソッド呼び出しする言語は大概そういうライブラリ設計あるでしょ
649 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 11:05:39.24 ID:DTE+piln.net] >>637 C++やJavaでは見たこと無い。 JSでも余り見かけない。
650 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 11:12:58.76 ID:Y+SvMVkX.net] そもそもメソッドチェーンって「スクリプト的」なのか?
651 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 11:24:14.14 ID:C+CtGbiq.net] 前々からヤベェやつだとは思ってたが レベルの低さが想像をはるかに超えてた
652 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 11:27:04.30 ID:MS0dCBGJ.net] c言語みたいにcsvパーサーも自前で用意するような環境だとそらスクリプト的だろうね。
653 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:00:43.05 ID:A3vQNOxR.net] unityとかUEがrustに対応しないかなあ
654 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:00:58.11 ID:ZgJC7yuF.net] cargoみたいなパッケージマネージャがあるのもスクリプト的な要素のうちなのか?
655 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:10:16.46 ID:MS0dCBGJ.net] cargoは低レイヤー慣れてる人からすれば邪魔でしかないけどね。
656 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:20:50.35 ID:DTE+piln.net] SourceforgeなどでRustが好きといっている人の大部分はレベルが低いだろう。 そもそもこの世の中、大多数から受けるものにレベルが高いものがあったためしがない。 好きな言語ランキング上位のJS、Pythonも初心者向け言語であることは誰もが認めることだし。
657 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:40:11.21 ID:UqP25wMI.net] sourceforge??? stackoverflowの調査かなんかと勘違いしたの?
658 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:41:57.93 ID:ZgJC7yuF.net] >>644 どういうこと?ベアメタル向けでもcargo使うのが主流だと思っていた
659 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:47:56.99 ID:ZgJC7yuF.net] >>645 使用者のレベルの高低と言語のレベル(?)の高低は一致するという主張かな? 言語のレベルが高いというのが最先端のテクノロジーを取り込むという意味ならrustの目指すところではないと思う 他の言語で実証されたコンセプトを取り込むと宣言してる(た?)はず 高レベルな言語が必要な人はこんな普及言語じゃなくてもっと尖った言語を使うか自分で作るべきなのでは
660 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:49:38.36 ID:DTE+piln.net] >>646 ああ、そっちだった。 Stackoverflowも来てる人の頭の良さは一般大衆と同じくらいだから同じ。
661 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:53:14.42 ID:DTE+piln.net] >>648 そういうことじゃなくて、 ・Rustをほとんど使っても見てないのに勝手に「好き」と言っていることが分かってる。 ・Stackoverflowのような沢山の人が集まる場所の調査では、必ずJSやPythonのような初心者向けの言語が人気となるわけだから、そこの人々が好きだと思う言語は、JSやPythonのような感覚で使えると勝手に思い込んである蓋然性が高い。 ただし、現実はRustは実際には使ってないのに勝手に言っている。 ということ。
662 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 13:20:44.67 ID:YOv93GRR.net] stackoverflowの調査の話なら、調査内容を勘違いしている あれは「今Rustを使っている人が、今後もRustを使い続けたいかどうか」のアンケート結果をmost lovedと言ってるだけ だからJSやPythonユーザの意見は入ってない そもそもloveって言葉に語弊があるし、日本語にしたときに「人気の」とかなって余計訳がわからなくなってる
663 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 13:25:20.53 ID:YOv93GRR.net] たぶん「最も嫌嫌使っている人が少ない言語」みたいなのが正確な気がするな
664 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 14:15:44.60 ID:MW7lNw7H.net] 「今使ってる人が次も使いたいと思うか?」ってJetBrainsの調査でも毎回入れてくる項目だな 海外のアンケートではよく見るやつ
665 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 14:17:03.39 ID:DTE+piln.net] >>651 もし前半の通りなら、今Rustを使ってる人なんて極一握りの物好きだけだから 「love」なのは当たり前で調査結果が意味が無い。
666 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 14:19:45.06 ID:eXXN4CKf.net] 一生でどれか一つのプログラミング言語しか覚えられないとして Rust選ぶ人いますか? 選択したとして別にその言語がいきなりマスターできるわけでなく ただその言語しか覚えられないというだけですが
667 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 14:23:36.58 ID:DTE+piln.net] 今rustを使ってる人って、自ら進んで使おうとした人に限られるから 嫌いな人がほとんどいないのは当たり前だから、調査結果にバイアスが 掛かりすぎていることになるな。
668 名前:はちみつ餃子 mailto:sage [2021/05/15(土) 15:05:35.65 ID:pVi51x8H.net] そういえば C++ でメンバ関数の評価順序に関して設計者も気づいてなかった考慮漏れが見つかった (よくあるパターンが実際には未定義だった) って話があったな。 www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0145r0.pdf C++17 で修正されているはずだけど。 宣言的な表現や関数的な表現をプログラミング言語に取り込む試みは数多いが 現実は順序からは逃れられぬのだ……。
669 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 15:16:25.44 ID:HcoKJY+/.net] Rustがスクリプト的に書けるかどうかはおいといて、 個人用のツール書く言語をPythonからRustに乗り換えたっつー話は一応あるな https://hayatoito.github.io/2017/faq/#programming-language
670 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 15:20:52.26 ID:DTE+piln.net] >>658 Googleがnode.jsで書いていたものをRustにしたと聞いたぞ。
671 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 15:23:50.02 ID:TrqVEcq2.net] 全部書き直すのは逆に効率悪そう 速度的にキツイ場合のみでいいんじゃないか
672 名前:? [] [ここ壊れてます]
673 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 15:32:34.68 ID:H/3gPTTR.net] どちらかといえば速度よりも変更頻度が動機になると思う 静的チェックツールも増えてはいるけどコンパイル型はいじる時の安心感が違う
674 名前:はちみつ餃子 mailto:sage [2021/05/15(土) 15:37:59.52 ID:pVi51x8H.net] >>660 言語を跨いで呼出すときはその境界で色々な処理が挟まったりもするので、 まだらに入り乱れるような形になるとそれはそれで実行性能の足を引っ張ることもある。 状況次第なので一概には言えないけど、言語を変更すると決めたなら そこそこ大きい単位で乗り換えるのが妥当な場合は結構あると思うよ。
675 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 17:32:17.46 ID:jwQMP5Oj.net] >>661 それはあるね 個人用のツールだとそんなに真面目にテストも書かないから 動的型だと忘れた頃に改修したくなって詰む
676 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 18:53:39.15 ID:IpomZGOJ.net] >>642 MSがdotnet対応のRust#出したらUnityワンチャンあるんやない?
677 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 19:10:58.08 ID:Y+SvMVkX.net] そこはRust/CLIで。
678 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 21:52:45.98 ID:TrqVEcq2.net] GCのあるrustに存在意義などない
679 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 22:13:28.16 ID:Y+SvMVkX.net] GCとデストラクタが共存するC++/CLIはなかなか興味深い言語だった。
680 名前:デフォルトの名無しさん mailto:sage [2021/05/16(日) 11:00:47.47 ID:9EXRd3vl.net] RustのGCって初期はまた復活されるかもーみたいなノリじゃなかったっけ?
681 名前:デフォルトの名無しさん mailto:sage [2021/05/16(日) 11:12:01.38 ID:SPtqbmz9.net] RC関連についてはやるとか?
682 名前:デフォルトの名無しさん mailto:sage [2021/05/16(日) 12:07:45.66 ID:MDYO1Tug.net] @ pointerとか ~ pointerとかあった頃の話?
683 名前:デフォルトの名無しさん mailto:sage [2021/05/16(日) 15:06:48.66 ID:JH7fFMWR.net] >>665 確かにそっちか >>666 GCがあるRustって言うよりはunsafeを外部リンクで呼び出してるようなもんだろ
684 名前:デフォルトの名無しさん mailto:sage [2021/05/17(月) 10:53:44.01 ID:ZSkTvtbm.net] rustが覇権を取るにはPHPみたいにドキュメントの翻訳をたくさん作ること そしてサンプルコードを盛り込むこと
685 名前:デフォルトの名無しさん mailto:sage [2021/05/18(火) 19:40:20.00 ID:A1yOEMnk.net] >2021 Editionは2021年10月にリリースされる。今回のエディションは「Rustの使用感を大きく改善する」ものになるという あんまり前にこんな発表しないでほしい やる気なくなる
686 名前:デフォルトの名無しさん mailto:sage [2021/05/18(火) 19:44:35.79 ID:Gj41gD2H.net] >>673 ちゃんと発表資料見れば分かるけど、大して使用感変わらんよ クロージャー使いまくりの人が一番恩恵を受けるかな
687 名前:デフォルトの名無しさん mailto:sage [2021/05/18(火) 20:19:55.73 ID:Z0RWJbQc.net] 所有権は移動するときのほうにマークが出るべきなんじゃあ
688 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 07:47:56.56 ID:X700JkCT.net] まぁコストかかるのはコピーだし
689 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 08:05:05.13 ID:o3bqBTNO.net] Rustの真似をしようとする言語がないのがふしぎだ
690 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 12:30:25.52 ID:HmkTJiD6.net] https://en.m.wikipedia.org/wiki/Rust_(programming_language) wikipedia見ただけだけど Crystal, Elm
691 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 12:30:46.25 ID:HmkTJiD6.net] など影響を与えた言語は列挙されてた
692 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 12:42:47.10 ID:9T1L9lvJ.net] >>678 Elmのどこが?と思ってソースを読んだら 関数型言語なら大体持ってるEither型の名前を Result, Ok, Error にしたところがRust由来とな うーむ持ってきたのは名前だけなのにInfluencedか
693 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 12:59:40.27 ID:u9Tr9lyP.net] Gleam https://gleam.run/book/tour/index.html OwnershipやLifetimeの考え方を採用した言語はまだ聞いたことがない
694 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 13:11:21.07 ID:bDX8SBSl.net] 所有権の考え方を採用している言語としてはC++などがあります
695 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 14:00:04.90 ID:NOe9g/vN.net] まあインスタンスの共有については何らかの言語サポートが入ってもおかしくないかもね
696 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 01:09:22.49 ID:WwVMFHF+.net] DにもOwnership入ったとか小耳に挟んだだけなら
697 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 17:03:02.09 ID:VKAk8Olu.net] https://forest.watch.impress.co.jp/docs/news/1325564.html 凄いね
698 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 17:06:31.55 ID:13olK3Lw.net] >>685 UIがReactというのが残念
699 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 18:20:18.69 ID:PiC1UW/o.net] 逆に何ならいいんだよ
700 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 18:33:43.55 ID:UXe9/StR.net] GUIフレームワークをRustで作るうまみあまりなさそう
701 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 19:39:25.12 ID:QrP75Wi1.net] Rustで作ってあるなら絶対大丈夫だな!
702 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 22:57:01.82 ID:HbCDuKW4.net] 設計がクソだとダメ ダメなヤツはなにやってもダメ
703 名前:デフォルトの名無しさん [2021/05/21(金) 11:45:49.77 ID:r1IBz1vL.net] >>538 (1)もちろん例外を使わずとも関数呼び出し等がエラー値を返すことで全て実現できます (2)ところがエラー値が返ってくると毎回if文やmatch等でエラー時はそこですぐreturnする等の処理を書く必要があって面倒かつコードが醜いため例外の使用が好まれました (3)Rustでは関数の返り値型をResult<T,E>とすることに加えて「?」オペレーター(旧try!マクロ)を使うことで(2)の処理を自動化しました つまり関数等呼び出し毎にifやmatch等で返り値エラーチェック&returnの記述をしなくても末尾に「?」を記述するだけで済みます これでチェーンも出来て具体的には b = a.hage()?.hige()?.hoge()? と書くだけでhage()でエラーが返れば早期エラーreturnしますしhige()やhoge()でエラーでも同様です 関数の返り値型がResult<T,E>であることが使用条件です これはもちろん正常値の<T>型とエラー<E>型のenumです これらにより関数を多段に深く呼び出していても深い所でのエラーがすぐにreturnを多段にしてエラーが戻って来ます したがってRustでは例外を使わなくても困らないのです
704 名前:デフォルトの名無しさん [2021/05/21(金) 13:37:02.96 ID:J6y23PLS.net] すまんrust新参者なんだが、Rust By Exampleのコードいじって勉強してて、以下のコードが疑問に感じられた。 以下のプログラムはmain関数内のif文は実行されないとは明らかなんやが、それでもsubの行でいわゆるuse-after-freeのコンパイルエラーが出る。 これはif文が実行されなくてもdropは実行されるということなんですか? 下のコードみたいにuse-after-freeになるかならないかがif文の条件満たすかどうかによって決まるようなプログラムでも rustでは一緒くたにuse-after-freeになるとみなされるってことなんですね? そう考えればそこまで賢くないコンパイラですね struct Droppable { id: &'static i8, } impl Drop for Droppable { fn drop(&mut self) { println!("> Dropping {}", self.id); } } fn sub(d: &Droppable) { if *d.id == 0 { drop(d); println!("> Test {}", d.id); } } fn main() { let _a = Droppable { id: &0 }; if *_a.id == 1 { drop(_a); } sub(&_a); }
705 名前:デフォルトの名無しさん [2021/05/21(金) 13:4
] [ここ壊れてます]
706 名前:0:53.52 ID:J6y23PLS.net mailto: ちなみにコンパイルエラーも貼っておく Compiling playground v0.0.1 (/playground) error[E0382]: borrow of moved value: `_a` --> src/main.rs:22:9 | 18 | let _a = Droppable { id: &0 }; | -- move occurs because `_a` has type `Droppable`, which does not implement the `Copy` trait 19 | if *_a.id == 1 { 20 | drop(_a); | -- value moved here 21 | } 22 | sub(&_a); | ^^^ value borrowed here after move //ここでuse-after-free errorが発生! error: aborting due to previous error For more information about this error, try `rustc --explain E0382`. error: could not compile `playground` To learn more, run the command again with --verbose. [] [ここ壊れてます]
707 名前:デフォルトの名無しさん [2021/05/21(金) 13:44:28.52 ID:J6y23PLS.net] Compiling playground v0.0.1 (/playground) error[E0382]: borrow of moved value: `_a` --> src/main.rs:22:9 | | let _a = Droppable { id: &0 }; | -- move occurs because `_a` has type `Droppable`, which does not implement the `Copy` trait | if *_a.id == 1 { | drop(_a); | -- value moved here | } | sub(&_a); | ^^^ value borrowed here after move //ここでuse-after-free errorが発生! error: aborting due to previous error For more information about this error, try `rustc --explain E0382`. error: could not compile `playground` To learn more, run the command again with --verbose. 見やすくした
708 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 14:49:33.29 ID:vx/ErwhM.net] 意味のないコードだよ
709 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 14:53:16.15 ID:PNtD97K1.net] コンパイラは別に値まで見ないからな clippyが意味のない分岐だよと指摘してくれるのかどうかは知らんが