1 名前:デフォルトの名無しさん mailto:sage [2021/08/24(火) 22:55:27.78 ID:972JwtmU.net] 公式 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を学びたい人はまず最初に公式のThe Bookを読むこと https://doc.rust-lang.org/book/ ※Rustのasyncについて知りたければ「async-book」は必読 https://rust-lang.github.io/async-book/ ※C++との比較は専用スレへ C++ vs Rust https://mevius.5ch.net/test/read.cgi/tech/1619219089/ 前スレ Rust part11 https://mevius.5ch.net/test/read.cgi/tech/1623857052/
778 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 10:43:24.73 ID:oPyph5kC.net] 面倒見るわけねーじゃん。 ヘッダーファイル依存をまともに解決しようと思うと、ビルド速度に影響がモロに出る。 解決するには暗黙のキャッシュ使うことになって問題が起きやすくなる。
779 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 11:14:38.10 ID:jL9+j5XP.net] >>762 一番基本的なやり方だとcc crate使うことになると思うけど このやり方だとヘッダやライブラリは自分で指定する必要ある 使ったことないけどpkg_config crateとか使えば多少は楽になるのかもしれない C/C++コードが別プロジェクトからの流用ならそのプロジェクトのビルドツールに乗っかるのが楽かも 例えば cmake や autocfg/autotools といった crate はあるみたい
780 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 12:25:26.72 ID:cow76Y8p.net] >>749 vectorじゃなくて、listを使うと大丈夫。 C言語は、もともと、linked list が代名詞の様な言語。 それを引き継いだC++もstd::listこそが主役。 ところが、stroustrupがvectorを推奨するから混乱してる。
781 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 12:39:56.60 ID:jL9+j5XP.net] >>765 それは初耳。誰が linked list が C の代名詞と言っているの? 経験上は配列使うことの方が多いように思うんだが
782 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 15:20:57.34 ID:gU1bKDav.net] >>765 std::listはn番目アクセス遅いよ だからstd::vectorを利用するケースが圧倒的に多い
783 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 15:29:58.26 ID:+iNX7XVA.net] listそんな使うことないやろ。挿入と削除が早いだけやんけ。何が言いたかったんだか。
784 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 21:23:43.42 ID:292fwFlx.net] 確かにlistはあまり使った記憶がないなー キャッシュのミスヒットを考えると、 vectorでリロケートした方が速い場合もあるし
785 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 23:37:04.31 ID:Qq+Ry0m8.net] listは敵キャラの弾幕なんかの座標管理なんかに使える
786 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 12:19:23.96 ID:5XPa2/LH.net] ほぼcだよねこれ。 https://github.com/Rust-for-Linux/linux
787 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 12:22:25.90 ID:GgDBkr4o.net] (Cで書かれてるLinuxカーネルのフォークなんだから当たり前やろ)
788 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 15:27:28.34 ID:0LtRxxZs.net] そもそも全部書き直すならLinuxを冠する意味が・・・
789 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 16:06:41.74 ID:9axoCOPN.net] 何で? (全部書き直すなど誰も言ってないけど理由を聞いてみたい)
790 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 16:12:52.85 ID:473S9WY0.net] うん、それ、RustでLinuxを作り直してるんじゃなくて、元々のLinuxをベースにして、新しい機能をRustで開発しようとしているプロジェクトでしょ
791 名前:デフォルトの名無しさん [2021/10/19(火) 18:28:24.83 ID:lJqU9SJa.net] 嘘つき
792 名前:デフォルトの名無しさん [2021/10/19(火) 18:57:21.27 ID:C9DkQou5.net] 日本語不自由どころか 頭が不自由だと拝察します
793 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 18:58:18.97 ID:bh+xrreW.net] panicは無事無くなったんかな。
794 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 19:07:22.39 ID:0VPrblkh.net] 彡 ⌒ ミ (´・ω・`) 頭が不自由という言葉が引っかかったので飛んできました
795 名前:デフォルトの名無しさん [2021/10/19(火) 19:29:57.38 ID:k3wLx80J.net] 彡 ⌒ ミ (´・ω・`) 飛ぶとかカッパの風上にも置けんな、泳げや
796 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 20:33:01.03 ID:q+n6NKoj.net] >>778 アロケーターのpanicのことなら7月に出たパッチでなくなったみたい https://lore.kernel.org/lkml/20210704202756.29107-1-ojeda@kernel.org/
797 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 20:49:57.64 ID:XSR/7M6W.net] C++erはほんとゴシップ談義が好きやな Rustスレにまでそのカルチャー持ち込まんで欲しいわ
798 名前:デフォルトの名無しさん [2021/10/19(火) 21:31:52.96 ID:3gMaYVXy.net] ペチパーと大差ないからな
799 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 10:48:38.28 ID:kKtRU0ug.net] ターゲットも開発者も丸かぶりだからしゃあない
800 名前:デフォルトの名無しさん [2021/10/20(水) 13:23:40.75 ID:nZj/SCQk.net] で、非同期ライブラリはどれが標準になるのよ?
801 名前:デフォルトの名無しさん [2021/10/20(水) 13:24:10.28 ID:nZj/SCQk.net] で、非同期ライブラリはどれが標準になるのよ?
802 名前:デフォルトの名無しさん [2021/10/20(水) 13:29:36.31 ID:4F9a+p6K.net] tokio
803 名前:デフォルトの名無しさん [2021/10/20(水) 16:05:21.56 ID:Ojn1Tksn.net] std
804 名前:デフォルトの名無しさん [2021/10/20(水) 18:46:14.43 ID:2vbfBLJv.net] どっちでもいいけど、インターフェースは統一して欲しいな。 今のところtokioか優勢みたいね。
805 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 21:12:16.85 ID:rAmGIrdk.net] std::sync::mpsc ってなんで send がノンブロッキングなんだろうなぁ。
806 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 23:01:04.88 ID:Px+syONf.net] ブロッキングなSenderがほしいならchannel_sync使うんだべさ
807 名前:デフォルトの名無しさん [2021/10/20(水) 23:32:51.88 ID:4F9a+p6K.net] ブロッキングとかノンブロッキングとか何度か解説読んだ気がするけど意味がわからないわ
808 名前:デフォルトの名無しさん [2021/10/21(木) 00:05:01.15 ID:5bux1k1I.net] 迷惑な香具師だな
809 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 02:48:53.14 ID:rcBT1TlJ.net] おまいら mut のことを何て呼んでる? 俺は心の中でムットと呼んでいる
810 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 02:53:24.97 ID:4380fmPV.net] ミュータブルの略なので……
811 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 03:47:37.11 ID:mWga6xPa.net] インテジャーはイント キャラクターはチャー なんだから、ムットでも何でも好きに呼べばよろし ちなみに俺は心の中でムトゥと踊る^H^H呼んでる
812 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 08:50:47.46 ID:rE4toNa0.net] マッだろjk
813 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 08:54:53.70 ID:NOaHdDiV.net] マットな
814 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 11:02:50.76 ID:s+STdMnX.net] cv::Mat は?
815 名前:デフォルトの名無しさん [2021/10/21(木) 13:03:22.69 ID:rHBxJh+b.net] >>799 メアット
816 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 13:17:43.38 ID:rE4toNa0.net] メッ
817 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 15:58:29.41 ID:X5IbXF0A.net] そんなくだらない疑問より誰か>>758 に答えてくれませんでしょうか
818 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 16:23:52.35 ID:iSzsEmw9.net] >>802 implにunsafeって書かないといけないのと同じことだけど implを書くやつが要求されてるsafetyルールを担保しないといけない そのためのマーカー
819 名前:デフォルトの名無しさん [2021/10/21(木) 16:35:52.56 ID:wNducfW7.net] うんこすれっど
820 名前:デフォルトの名無しさん mailto:sage [2021/10/21(木) 19:56:22.82 ID:wPmlSLSw.net] >>791 sync_channelってのがあるのか。ありがと。 ちゃんとランデブーもできるって書いてあるな。
821 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 00:54:23.67 ID:pgS4Ah89.net] Rust 1.56.0 リリース! https://tech-blog.optim.co.jp/entry/2021/10/22/080000
822 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 01:45:44.26 ID:BVy1/we8.net] let x = f64::cos(3.14); みたいなのをf64::を省略して書きたいのですがどうすればよいですか? use f64::cos; みたいなことはダメなようです
823 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 12:44:59.32 ID:rv17aNSC.net] 1回はf64と言わないと伝わらないので let p = 3.14_f64; let x = p.cos();
824 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 14:40:08.49 ID:BVy1/we8.net] すみません、p.cos()の記法がなんかイヤでcos(p)みたいな記法をしたいってことでした
825 名前:デフォルトの名無しさん [2021/10/23(土) 18:48:04.65 ID:/3ucisXu.net] use f64 でだめなら無理じゃね
826 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 18:52:41.89 ID:qtW8jcI5.net] modなら確かにuseで省略できるけど Box::newのBox::を省略したいみたいな話だしなあ
827 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 18:55:33.73 ID:qhVW7VS5.net] fn cos(x: f64) -> f64 { f64::cos(x) } cos(3.14) 素直にp.cos()のほうがいいとは思う
828 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 18:55:43.78 ID:rVbtEKl1.net] let cos = f64::cos; ならいける https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=3c7b96b61723e46d132c9e0f2d46911b
829 名前:デフォルトの名無しさん [2021/10/23(土) 19:43:20.47 ID:2qA+vCFq.net] fn main() { println!("{}", cos(&32)); println!("{}", cos(&4.5)) } trait GetDouble { fn get_double(&self) -> f64; } fn cos(num: &dyn GetDouble) -> f64 { f64::cos(num.get_double()) } impl GetDouble for f64 { fn get_double(&self) -> f64 { *self } } impl GetDouble for i32 { fn get_double(&self) -> f64 { f64::from(*self) } } https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=cb0e5606622069ca33b0ef0971fa94b4 これでいこう
830 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 20:42:27.27 ID:qhVW7VS5.net] ジェネリックにしたいならIntoでいいんじゃないかな fn cos(x: impl Into<f64>) -> f64 { f64::cos(x.into()) }
831 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 20:49:05.66 ID:+aPgOjd/.net] ジェネリックにしたいなら戻り値も引数に合わせたいのでは num_traits::Float::cos など使うべき https://docs.rs/num-traits/0.2.14/num_traits/float/trait.Float.html#tymethod.cos
832 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 14:23:12.50 ID:eQqSgpa/.net] 文法でrustとc++/cが似ているって言うやつは何をもって似ていると言っているだろう ムーブセマンティクスがデフォだし、classはない、for文はイテレータだし、変数と関数の宣言の
833 名前:痰「がはっきりしているし 何よりも型は前置じゃないし [] [ここ壊れてます]
834 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 14:52:08.66 ID:spG6Bthy.net] C++とスクリプト言語ぐらいしか知らないんじゃないの?
835 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 14:55:21.00 ID:lUSERxty.net] >>817 誰がもなにもオフィシャルなドキュメントでC++に似せたと言っている 型引数が<>だったりブロックが{}だったりそういうレベルで似てると言っている
836 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 14:56:01.04 ID:lUSERxty.net] C/C++というよりC familyに似せたと言っていたからちょっとニュアンスは違ってくるか
837 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 15:13:22.96 ID:eQqSgpa/.net] >>819 ソースをくれ 公式で構文を似せたとか言っていないと思うが C++: references, RAII, smart pointers, move semantics, monomorphization, memory model https://doc.rust-lang.org/reference/influences.html
838 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 15:37:41.12 ID:IF6Ria+p.net] 型名がintならc++ぽいというのはなんか違うんだよね ->とか<<<とか気持ち悪いことをし始めたらc++感が出てくる
839 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 15:38:30.82 ID:lUSERxty.net] >>821 web.archive.org/web/20150401014855/http://doc.rust-lang.org/nightly/intro.html > you may find the syntax easier if you've used a "curly brace" programming language before, like C or JavaScript 確かに似せたとまでは言ってなかった generics の angle bracket についてはコアメンバーが言及してるしC++の影響受けてると言って良いと思う https://old.reddit.com/r/rust/comments/6l9mpe/minor_rant_i_wish_rust_had_gone_with_square/
840 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 15:44:23.48 ID:zP2CpnNP.net] C++ iostream の << 演算子をパクらなかったのは、やっぱりあれが失敗作だからだよね
841 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 15:46:45.70 ID:IF6Ria+p.net] >>823 thx、ソースまで探してくれてありがとう 個人的にはC++を感じるというエモーション(?)がどこなのかを聞きたかった
842 名前:デフォルトの名無しさん [2021/10/24(日) 16:28:47.34 ID:snvhdKAH.net] よくある質問 RustはLLVMの上に構築されており、LLVMから見てClangっぽく見えるように頑張っているので、LLVMの 性能が向上したらRustの性能向上にもつながります。 https://prev.rust-lang.org/ja-JP/faq.html
843 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 16:53:50.00 ID:RHSebvs6.net] 見た目はC++に似ているかも知れないけどML系列の方が近いんじゃない? コンパイラがうるさいところとか「コンパイルが通れば大体動く」という感触はHaskellに近い Vecに限定したくないなあとか関数に分けると型表記が面倒だなあとかはHaskellには無かったけど
844 名前:デフォルトの名無しさん [2021/10/24(日) 17:08:25.09 ID:6Jy8RsQO.net] move semanticsとかcall by ref(not call by val in terms of ptr)とかは他のスクリプトではないの多いしな(rakuぐらいじゃね?) 糞みたいに面倒なbig fiveとか書いて来てるc++ちゃんと理解してる連中はrustの基本部分の理解はかなり早そう 記法は全然似てないてかerror handlerの部分とか全くの別物になってるしな 比較的若いgoとかktとかの方が書いててなんとなく似てる様な気もする(´・ω・`)
845 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 17:32:03.31 ID:spG6Bthy.net] もう長いことC++書いてないけど、考えれば考えるほどC++つらいわ。昔の自分はよく書いてたな
846 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 17:59:25.66 ID:tj18qr6S.net] 本当はMLが好きな人がMozillaでC++書かされるのに疲れた結果生まれた言語なのでMLやC++の要素を併せ持つのは必然
847 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 20:02:44.06 ID:WKsYUqIz.net] >>828 GoやKotlinに似てたらc系列ぐらいの雑さでしょ
848 名前:デフォルトの名無しさん [2021/10/24(日) 21:17:24.37 ID:8hWi5KuQ.net] ChromeよりMozillaの方が性能良いことが、Rustを使うべきである証明になってるのでは?
849 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 22:01:13.83 ID:zrg/m0jp.net] 流石に乱暴すぎる
850 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 22:21:07.85 ID:HVo+cqVA.net] Chrome も Rust 使おうみたいな話なかったっけ
851 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 22:21:39.42 ID:spG6Bthy.net] セルフホストされるまではOCamlで書かれてたので、Chromeより性能の良いMozillaを作ったRustを最初に実装したOCamlを使うべき証明になってるのでは?
852 名前:デフォルトの名無しさん [2021/10/24(日) 22:28:24.77 ID:P21IrDZK.net] chromeユーザーだけどfirefoxの方が性能いいってマジなんか?
853 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 22:49:18.90 ID:IF6Ria+p.net] https://amethyst.rs/posts/amethyst--starting-fresh アメジストが死んだ... エンダァァァァァァァァァァァァァイヤァァァァァァ rustのゲームエンジンはbevy一強になるのか
854 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 23:27:29.19 ID:q0uVfP5C.net] GUIのツールキットはよ(`・ω・´ )
855 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 23:30:13.19 ID:zP2CpnNP.net] ちゃんとリリースまでたどり着いたrustのゲームってあるの?
856 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 23:47:38.31 ID:IF6Ria+p.net] >>838 icedじゃだめなん? >>839 今のところない 試作を含むならネット上に転がっているよ bevyね...レンダラーがwgpuだからね 現状はレイトレーシングとか無理 ゲームエンジンに挑戦するいい機会かも
857 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 23:55:17.08 ID:J36a/Om9.net] >>824 C++はシフト演算子をなぜ入出力に使いまわそうとしたのか未だに理解できない 見にくく&わかりにくくなってる
858 名前:デフォルトの名無しさん [2021/10/25(月) 00:09:38.02 ID:dMwiicPm.net] >>841 shellのリダイレクトに似てると思ったからだろ
859 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 00:21:35.96 ID:dRHq7DJG.net] >>841 当時の C++ には可変長引数を現代的な型システムの枠組みで扱う方法がなかった。 (C++11 からは variadic template がある。 これも今となっては現代的と言えるかどうか……。) 新しいオブジェクトを追加したときにオーバーロードが可能である必要など の諸々の事情が積み重なって演算子オーバーロードの仕組みを使うのが妥当という結論になり、 オーバーロード可能な演算子の中で比較的それらしく見えるのが << だったという経緯。 記法だけなら printf で不満は出なかっただろうけど、 printf (というか C の可変長引数の仕組み) は型システム的な保護が全然できないぶっ壊れなので それを是とすることも出来なかった。 (廃止もしなかったけど。) 良くはないが他にどうにも出来なかったんだよ。
860 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 00:30:55.79 ID:dRHq7DJG.net] 歴史が長くなるとしょうもない事情の積み重ねでグダグダになるのもよくあること。 Rust もいずれはそうなる。 そしてそのときは新しい何かで置き換えられるんだよ。 でも Rust の場合は Edition という区切りで新しい Rust 自身で置き換えつつ 過去の Rust とも共存することを最初から意図したデザインにしているので 比較的長く維持されるんじゃないかな。
861 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 10:06:46.78 ID:vPVmdF1Z.net] 実際、型安全であるiostreamよりprintfのがよっぽどマシって議論はある。 しょーもない技術要素よりも視認性のがよっぽど大事だったりするわけで。
862 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 11:11:20.41 ID:DCgj0YIV.net] >>840 iced日本語入力できなくない?
863 名前:デフォルトの名無しさん [2021/10/25(月) 11:14:28.05 ID:vmRZrQEp.net] >>827 >「コンパイルが通れば大体動く」という感触はHaskellに近い C/C++でも「コンパイルが通れば大体動く」けど Haskellはコンパイル時にアルゴリズムミスまでチェックしてくれるのか?
864 名前:デフォルトの名無しさん [2021/10/25(月) 11:32:11.39 ID:dMwiicPm.net] 単にHaskellはC/C++よりも型安全性の度合いが強いってこと言いたいんだろ
865 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 11:51:09.02 ID:fl6GjyRy.net] >>846 Font読み込めば出来るっぽいよ
866 名前:デフォルトの名無しさん [2021/10/25(月) 12:13:25.40 ID:Zg5tRANc.net] >>847 アスペルガーか?
867 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 15:20:38.75 ID:YZjFvrvy.net] Rustでゲームエンジン作ったら億万長者になれるのかな
868 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 17:18:01.27 ID:uPCS+ug6.net] UnityやUnreal Engine並のを作れるならできるんじゃね さもなきゃプロプライエタリなエンジンなんてきょうび流行らん
869 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 17:29:16.50 ID:SuqdiOg2.net] Rustの方が圧倒的に高速なら儲かるんじゃね? 知らんけど
870 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 17:42:54.30 ID:dQPM/Zr0.net] C++に勝てると思ってるの?
871 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 18:33:26.15 ID:WHGdQ2cY.net] フラッピーバードでも億稼げるんだからいけるいける
872 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 18:38:23.54 ID:SAo0WBxS.net] もうインディー2Dゲームぐらいはリリースされてるのかと思ったけど まだなのか
873 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 19:12:07.52 ID:rY5vWaGm.net] >>851 億万の金とリソースをかけなきゃ使い物になるエンジンなんて作れないんじゃないの? まあ、そこまでいかなくともユーザーのいる既存のツールで開発止まっているもの(MMDとか)のクローン作ればワンチャンあるかもね。
874 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 20:03:31.88 ID:cubP7NbG.net] ゲームエンジンでボトルネックとなるような重い処理ってなんなの 描画関連が重いならGPU側処理がメインでCPUで動くプログラムは何で書いても良いのでは
875 名前:デフォルトの名無しさん [2021/10/25(月) 20:21:36.23 ID:tU+lYK+H.net] 行列計算とメモリー帯域、PS5とPCを比べれば一目瞭然。PC4-25600でさえメモリー帯域が25GB/sで デュアルチャネルで50GB/s、PS5は帯域幅218GB/s、 つまり描画が重いのではなく、CPUやGPUで行列計算した結果をメモリーへ格納したり再び取り出したりが重い。 描画だけなら4K再生できるVRAMの速度だけで終わる話
876 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 20:24:03.79 ID:RLuxZR0I.net] >>851 儲かるかは知らんがbevy engineの作者はお賽銭で40万/月貰っているぞ
877 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 22:52:02.92 ID:JVD00Zwu.net] ゲーム1本も出てないってそれなんかデカイ問題あるんじゃないの。 使ってみたら、あれこれ全然意味ないわ的な。
878 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 23:04:10.31 ID:WHGdQ2cY.net] そらまあUnityとかみたいなガチゲームエンジンとかと比べたら意味ないんじゃね
879 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 00:13:42.72 ID:T+NfAItu.net] ゲームとか組み込みと並んで過去の資産が積み上がっているところだろう 現状グラフィックAPIなどのバックエンドは全部C/C++だぞ 一朝一夕の話ではないが、取り組み続ける必要がある とりあえずコールオブデューティのTreyarchは触っているぽい
880 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 00:19:35.84 ID:T+NfAItu.net] インディ→ue4かunity 大手→ゲームの開発スパン3-4年+ゲームエンジン開発期間 今から積極的取り組んでも公表できる成果ができるは8-10年じゃない そういえば任天堂もrust人材を募集してたよ
881 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 09:14:11.61 ID:1uavI5d4.net] カスタムアロケータ回りがしょぼいからガチのゲームエンジン用としては現状まだきついのでは
882 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 09:43:34.49 ID:AMOvMfiW.net] たしかにコンシューマゲーム会社なんかがRust採用を進めていく、ってのはなんかありそうだね プロダクトのプロトタイプ作成とかめっちゃあると思うんだけど、そういうのとかで、どんどん試してみて欲しい 彼らがRustコミュニティに貢献してくれるのか、っていうとなんか怪しい気はするけど
883 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 11:03:35.61 ID:ftLfN9xo.net] 最近はマイコンもセキュリティ機能が重要視されているけど 処理系は相変わらずC/C++でRustを推進みたいな流れにはなっていない矛盾
884 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 11:18:59.50 ID:BJDScnmh.net] そもそも組み込みで使えるrustコンパイラがないからな
885 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 12:47:26.53 ID:hwHjfkE+.net] 限定的ながらCortex-M用のバックエンドがあるじゃん
886 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 13:14:38.26 ID:I5hwU/3x.net] 俺のH8はどうなるんや
887 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 14:24:23.79 ID:ZxZWHA9I.net] LLVMバックエンドがあるならなんとかできるのでは ないなら知らん
888 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 15:31:08.95 ID:bUwN0t0N.net] >>870 RL78に乗り換えてどうぞ。LLVMバックエンドもあるよ
889 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 15:43:31.64 ID:BNqSw8pO.net] 僕はRX-78-2からRX-78NT-1に乗り換えたよ みんなもそうしなよ
890 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 15:50:06.56 ID:BJDScnmh.net] 嘘だと言ってよバーニィ
891 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 15:54:33.07 ID:BJDScnmh.net] 真面目な話Green Hillsが対応したら組み込みでも大分状況変わると思うんだが なんか内部では研究してるみたいだし
892 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 16:50:59.50 ID:BwJyZYHo.net] ルネサスは近年arm32bitとしてraファミリ出してる。h8とかsuperhな人は今すぐ乗り換えろ
893 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 17:52:31.12 ID:9Njhbr90.net] バックエンドがある組み込み向けISAはCortex-M系、RISC-V系、RL78、AVR8あたり? >>876 RAで済むなら他社のCortex-M系マイコンでも良いんじゃね感が・・・
894 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 20:33:41.25 ID:T+NfAItu.net] >>865 基本カスタムアロケータは自作では?
895 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 21:43:49.66 ID:BJDScnmh.net] アロケータ自作は大げさじゃないか heaplessクレートでどうにかなるんじゃないかな オレは使ったことないけど
896 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 21:51:14.59 ID:PDIGoDZx.net] Unityでいけるくらいならデフォルトのアロケータで十分では? jemallocとかに切り替えてもいいけど、どちらにしても自作するほどかね
897 名前:デフォルトの名無しさん [2021/10/26(火) 21:59:07.68 ID:zVG+0sad.net] うんこ
898 名前:デフォルトの名無しさん [2021/10/26(火) 22:58:46.15 ID:Fg4TonRG.net] Unity使うなら内部のGCはBoehm GCなんだからGC_MALLOC使ったほうが良いのでは? オレはRc<T>使いながらBoehmが使えるのか知らんけど
899 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 00:00:42.78 ID:6YxZEOiV.net] 別にゲームにカスタムアロケータが必須なんてことはないと思うが UnityみたいにGCありの言語で書く場合にGCのスパイクが許容できないから 独自のメモリプールとかを書かざるを得ないのでは それともC++でもアロケータ自作してるのか?
900 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 00:23:45.53 ID:c5Twcn5s.net] UnityってBoehm GCなんだ? それで十分動くんならRustにもGCあってもよかったんじゃない?
901 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 00:29:03.79 ID:QIbcJ+ZF.net] ならGo使えば良くない?
902 名前:デフォルトの名無しさん [2021/10/27(水) 00:46:21.16 ID:l1Jw+QgM.net] goはboehmじゃなく2017年ごろまでtcmallocで今は派生(随分、中身が違う)してるはず
903 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 07:18:35.73 ID:4kTRaQF8.net] Boehmてストップザ・ワールドは起こらんの?
904 名前:デフォルトの名無しさん [2021/10/27(水) 08:48:37.83 ID:NxiqMK2Z.net] Boehmってカタカナ的には何て読むの?
905 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 09:08:54.86 ID:CWN4UblG.net] ボエヒムじゃないの?
906 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 10:46:43.20 ID:OgmKOgHT.net] ベームかボームだろ、ボエヒムとかワロタw
907 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 11:14:08.33 ID:7BguKBbd.net] ドラクエの呪文みたいだな
908 名前:デフォルトの名無しさん [2021/10/27(水) 11:35:17.90 ID:Ru0zcXw7.net] ドイツ語のoeは日本語ではエって転写される
909 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 12:01:22.63 ID:dNMmh9m9.net] Phoenix
910 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 12:11:52.89 ID:AHUxp5wd.net] 412 名前: 以下、名無しにかわりましてVIPがお送りします 投稿日: 2013/01/19(土) 21:03:25.42 ID:a2pD/tlo0 FランのFはフェニックスのFや! 例えこんなところで落ちぶれても不死鳥のごとく上流階級に返り咲くんや!! 414 名前: 以下、名無しにかわりましてVIPがお送りします 投稿日: 2013/01/19(土) 21:04:02.87 ID:dT9mn0sK0 >>412 フェニックスは「phoenix」
911 名前:デフォルトの名無しさん [2021/10/27(水) 14:01:22.92 ID:t2iD5tO8.net] cafe la boheme
912 名前:デフォルトの名無しさん [2021/10/28(木) 12:12:05.45 ID:hM84Yf/1.net] >>887 スレチだが、Boehmなので本来はSTWだけなのでUnityにGCラグが発生していたことは有名ですが、2018/12頃に インクリメンタルGCが出来て改善された。 https://blog.unity.com/technology/feature-preview-incremental-garbage-collection またUnityでゲームなどを作るときに良くやるのがGCを動かさないこと(=オブジェクトを破棄しない)で オブジェクトプールを使用して1度作ったオブジェクトをプールして置き破棄させない方法など、Unityにある 文字列比較などを使用しないなど細かい事をやる。本末転倒といえばその通り
913 名前:デフォルトの名無しさん mailto:sage [2021/10/29(金) 02:30:41.55 ID:dwfT6x3M.net] 典型的なバッドノウハウだな とはいえ日本でUnityが一番つかわれているであろう現場のモバイルゲーム開発は 昔はケータイJavaのゲーム開発やってた場合が多いのでその辺のGCバッドノウハウに慣れちゃってるという Boehmはボエーンて読んでるわ
914 名前:デフォルトの名無しさん mailto:sage [2021/10/29(金) 02:58:27.64 ID:j8WlttkF.net] oe はドイツ語の o の代替綴りとしてあてられることが多い。 つまり boehm の本来の綴りは bohm ってことね。 o はオの口の音でエという感じなので音としては中途半端で、カタカナに当てはめにくい。 ドイツ語の発音通りをあえてカタカナにするならボェーンに聞こえるんだけど、 bohm という人名は通例ではベームと表記してるね。
915 名前:デフォルトの名無しさん mailto:sage [2021/10/29(金) 02:58:48.47 ID:j8WlttkF.net] あれ? 2ch に投稿したらウムラウトが消えてる……。
916 名前:デフォルトの名無しさん mailto:sage [2021/10/29(金) 03:36:42.46 ID:Ws4Kkx5X.net] appleをアップルと記載するような文化やからね。カタカナにしてしまったら本来の発音との差異なんて気にしたらキリがない
917 名前:デフォルトの名無しさん mailto:sage [2021/10/29(金) 04:15:21.99 ID:feAEAXNj.net] 名女優のオードリー・ヘップバーンと ローマ字表記のヘボン式で有名なヘボン氏が実は同じ綴り同じ発音の同じ姓みたいなもんか
918 名前:デフォルトの名無しさん [2021/10/29(金) 05:16:40.74 ID:eAaOJvH1.net] ドイチュ語と描いてない >>898 は失格
919 名前:デフォルトの名無しさん mailto:sage [2021/10/29(金) 21:33:27.38 ID://DLIqvB.net] まじかあ、これが可能だったのかあ let v = vec![1, 2, 3]; println!("{}", v[if true { 1 } else { 2 }]);
920 名前:デフォルトの名無しさん mailto:sage [2021/10/29(金) 23:53:13.86 ID:3N24c0Lq.net] >>901 ヘボンさんは自分でも気に入って「平文」なんてハンコ 持ってたくらいだから定着しちゃったんだよなw
921 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 00:22:25.21 ID:9U1YWI6I.net] 音韻と音声は異なる。 ある言語で同じ音だと認められる音が音韻で、 たとえば日本語だとシンブンシという言葉に表れる二個のンは実際には違う音 なのに同じ音として処理している。 (だからヘボン式ローマ字では書き分けるルールになっている。) 音韻として同じでも音声として幅はあり、そして音韻は言語に依存するもんだから、 外国語の音を転写してくるとどう頑張ったって辻褄の合わない部分は出てくる。
922 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 01:29:07.34 ID:fDTZDMBU.net] >>901 唐鳳は上手いよな
923 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 02:41:12.91 ID:z8LGC696.net] いつの間にか[T; N]にIntoIteratorがimplされてるな しかも興味深いことにVec等と異なり消費されないようだ 借用ルール的にはどういう扱い?
924 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 08:30:57.45 ID:zPV0av3I.net] イテレータが理解できないやつ定期的に湧くな
925 名前:デフォルトの名無しさん [2021/10/30(土) 09:56:39.69 ID:gRDEN/XN.net] 常駐
926 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 11:34:48.67 ID:cxTfS1zf.net] >>902 ドイちェン
927 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 20:52:05.52 ID:/cDwb9ic.net] >>907 Rust 1.53.0で配列にIntoIteratorが実装された あと識別子に日本語も使えるようになった 配列は要素がCopyを実装しているかどうかで所有権の扱いが変わる #[derive(Debug,Clone,Copy)] struct 構造体 { 値: isize, } fn main() { let 配列 = [構造体{値:1}, 構造体{値:2}, 構造体{値:3}]; for 変数 in 配列 { println!("{:?}", 変数); } println!("{:?}", 配列[0]); } 例えばこれはコンパイルが通って動くけど 構造体のderiveのCopyを外すと 配列の所有権はfor in内部のinto_iter()で移動してしまいコンパイルが通らなくなる
928 名前:デフォルトの名無しさん [2021/10/30(土) 21:00:13.45 ID:zJlZfWf6.net] >>911 ぶっちゃけ日本語の識別子わかりやすいって思ってしまった
929 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 22:32:29.50 ID:EbhCJ5wH.net] 日本語識別子わかりやすいんだけど入力に手間がかかるのがつらい
930 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 23:29:17.10 ID:s2ubgEFJ.net] let v0 = vec![1, 2, 3]; let mut v1 = v0; v1.push(120); let mut v0 = vec![1, 2, 3]; let v1 = &mut v0; v1.push(120); 所有権関連で試してみてるんだけど、この二つの違いってなんなん? いまいちよくわからん 上のはmutでないvecをlet mutの変数に入れるとpushできてまうし 下のはlet mutでない変数なのに&mutでいれるとpushできてまう
931 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 23:56:55.99 ID:cJtJXOgj.net] https://doc.rust-lang.org/rust-by-example/scope/move/mut.html
932 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 00:40:09.42 ID:ndmOeSWD.net] >>914 それぞれpushした後にv0とv1がどうなってるか確認してみるとわかる
933 名前:デフォルトの名無しさん [2021/10/31(日) 01:41:05.72 ID:e5ZzvOAs.net] うんこ荒らすな!
934 名前:デフォルトの名無しさん [2021/10/31(日) 02:16:55.91 ID:HeT/GYnp.net] すまんがVSCode + Rust-Analyzerで勉強中なんだけどさ 数ヶ月前は変数の型が表示されていたのに、今じゃ全然表示されなくなっちゃったんだけど・・・・どうすればいいんだぜ?
935 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 03:00:17.77 ID:9uKpC+QX.net] int * constみたいなもん 参照先のアドレスは変更不可だけどそのアドレスが指してるvectorは&mutだから変更可能
936 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 03:02:55.52 ID:nF8ypkXG.net] >>914 他の言語での余計な知識を捨て去ってゼロから考えるとわかりやすかったよ 今回の件で関係するルールは単純でこれだけかな? 【所有権】 ・所有権を持てるのは一人だけ ・使う(=代入や関数引数も含まれる)と所有権は移動する ・ただしCopyトレイト実装型は使う時にCopyされるので所有権は移動しない 【所有権を持つ可変と非可変】 ・その変数の中身を書き換える予定があるなら変数を可変(mut)に宣言しておく ・他の変数に代入しなおせば可変か非可変か変更可能(つまりその変数を使う時の制限ヒント) 【参照(=貸出=借用)】 ・所有権が移動されたくなければ参照で貸し出す ・可変参照(&mut)の貸し出しは1人のみに参照独占で元も可変変数であること ・非可変参照(&)の貸し出しは同時に何人でも可能 ・まとめるとsingle writer or multi readers 所有権を明確にするのはメモリ自動解放のため 可変を明確にするのは並行(concurrent)/並列(parallel)での競合回避のため
937 名前:デフォルトの名無しさん [2021/10/31(日) 07:46:34.10 ID:dD8mFzoB.net] >>918 inlayHints
938 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 09:44:05.10 ID:726CqcoT.net] 所有権を伸ばして発音すると昇龍拳みたいに聞こえる 出掛かりが無敵なところも似てる
939 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 09:51:39.37 ID:5rE8GYET.net] ヒカヘンサンショウ
940 名前:デフォルトの名無しさん [2021/10/31(日) 13:37:02.02 ID:r7nTmIjE.net] 丁寧で優しい920を弄りたくないけど、これを読める人は914のような質問はしないね
941 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 13:58:11.88 ID:yTUS2Zye.net] 以下の関数をジェネリックにする方法ありますか? fn is_one_two_three<A: AsRef<[isize]>>(a: A) { assert_eq!(&[1, 2, 3], a.as_ref()); } fn main() { let a = [1, 2, 3]; is_one_two_three(a); let a = vec![1, 2, 3]; is_one_two_three(a); } 配列もVecも受け取る関数でこれはコンパイルも通り動いているのですが isizeと型が決め打ちのところをジェネリックにTとしたいです どうするとよいでしょうか?
942 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 14:34:45.61 ID:ZiqPaZpd.net] >>925 数値型を一般化する trait を使うのが普通かな。 自分で定義しても良いが num_traits::FromPrimitive を使うならこんな感じ https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=1fbd536dd6c9ea76beb20a666b085190
943 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 16:04:00.70 ID:2p54m3kz.net] >>914 気持ちの上では他の言語と対応付けるのではなく Rust のルールで理解すべきという点で >>920 に 同意ではあるんだが、そうは言っても知っていると引っ張られるのも仕方のない話で、 入門初期では多少はしょうがないとも思う。 あえて C++ で同等のものに置き換えるとするとこんな感じかな。 #include <vector> int main(void) { { const std::vector<int> v0 = {1, 2, 3}; std::vector<int> v1 = v0; v1.push_back(120); } { std::vector<int> v0 = {1, 2, 3}; std::vector<int>* const v1 = &v0; v1->push_back(120); } } この場合は所有権の概念はあまり関係なくて メソッド呼出しの演算子が参照を自動で調整してしまうのも混乱の原因になってる気がする。 mut が何にかかっているのか見えにくい。
944 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 16:25:11.82 ID:KIvWC7vb.net] >>927 少なくとも上は全く同等じゃない C++では表現出来ない
945 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 16:52:46.17 ID:2p54m3kz.net] >>928 ムーブの仕組みが違うのはしょうがない。 この場合は const 性の話だと思ったから……
946 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 17:14:21.91 ID:WrAvX4Kw.net] C++で考えるのは弊害しかないじゃん 何がしょうがないだよ
947 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 17:47:23.34 ID:dE1SXutD.net] 弊害しかないは言いすぎ この場合mutをどこに付けると何が可変になるかの話だから C++でconstをどこに付けると何が不変になるのかを例に出すのは自然なたとえだと思いますよ
948 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 21:58:15.04 ID:4rIS02S1.net] let mut vec0 = vec![vec![0, 2, 3]; 3]; for mut i in vec0.iter_mut() { i.push(9); } for mut i in &mut vec0 { i.push(9); } この二つのループの意味は同じ? こういう二つの書き方があるのでちょっとわかりにくい気がする
949 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 22:14:30.87 ID:4rIS02S1.net] へー、これが通るんだ ちょっと笑った let vec0 = vec![0, 2, 3]; let mut vec0 = vec0; vec0.push(99);
950 名前:デフォルトの名無しさん [2021/10/31(日) 22:21:16.21 ID:xmsO/hLH.net] >>933 シャドーイングだから当たり前でしょ
951 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 22:22:32.67 ID:fTPwCWVK.net] シャドーイングOKな言語でもlintが禁止してきてイラっとする
952 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 22:31:01.48 ID:4rIS02S1.net] >>934 状態まで置き換え可能なのはおかしいような気がする せっかく不変変数にしてるのに事実上代入可能にしてることに何の意味があるんだろう
953 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 22:44:51.38 ID:2W4wB6er.net] クソみたいな名前が増えないようにだよ
954 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 22:57:25.82 ID:Ou5/KoYl.net] >>924 「関係するルールは単純でこれだけ」と言って関係ないものも含めて8個もルールを羅列するやつが丁寧で優しいわけがないよ
955 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 23:04:28.74 ID:4rIS02S1.net] >>937 変数名の再利用と状態変更はちがくね? そもそも変更しないと宣言して変数をシャドーイングして変更可能にするのも疑問だけど、 まあそれは仕様だとして、それが変数名の再利用とは無関係じゃんね 再利用しない前提なんだから
956 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 23:09:50.30 ID:59hJVDPo.net] もはや何言ってるかわからないレベル
957 名前:デフォルトの名無しさん [2021/11/01(月) 00:28:06.90 ID:lB3Z2euD.net] >>936 状態置き換えてない 新しい方の変数を参照するようにしているだけ
958 名前:デフォルトの名無しさん mailto:sage [2021/11/01(月) 00:30:02.23 ID:cNNz1tH7.net] >>932 mut i ってmut必要だっけ
959 名前:デフォルトの名無しさん mailto:sage [2021/11/01(月) 01:16:30.92 ID:FrHt6Y1+.net] >>932 > for mut i in vec0.iter_mut() { > for mut i in &mut vec0 { どちらもiは&mutになるので同じfor文になる そしてlet mut i = &mut ... と書いている時と同じく左側のmutは不要(warning)
960 名前:デフォルトの名無しさん mailto:sage [2021/11/01(月) 01:31:09.18 ID:FrHt6Y1+.net] >>925 配列もVecも受け取る関数ならば as_ref()でスライスに揃える方法だけでなく
961 名前:r> 配列もVecもそのままの型で使う方法もあり どちらもa[i]の形はIndexトレイトで使えるので例えば fn get_second_item<A: std::ops::Index<usize, Output=T>, T: Copy>(a: A) -> T { a[1] } fn main() { let a = [1.1, 2.2, 3.3]; assert_eq!(2.2, get_second_item(a)); let a = vec!["a", "b", "c"]; assert_eq!("b", get_second_item(a)); } と配列/Vec側も中身のf64/&str側もジェネリックに書ける [] [ここ壊れてます]
962 名前:デフォルトの名無しさん mailto:sage [2021/11/01(月) 08:15:24.70 ID:Qg2QcgLf.net] 背後にある考え方を説明せずにルールだけ教えても理解できないよ。 まあ、ルールに一貫したコンセプトがないんだったら「こういうものだ」と押し付けるしかないけど。
963 名前:デフォルトの名無しさん mailto:sage [2021/11/01(月) 23:13:41.76 ID:PK
] [ここ壊れてます]
964 名前:aNA1In.net mailto: 可変の場合は面倒でもmutが必要ってしたほうがわかりやすいような気がするなあ [] [ここ壊れてます]
965 名前:デフォルトの名無しさん mailto:sage [2021/11/01(月) 23:57:09.03 ID:HKf+kmzN.net] let mut p = &mut q; の左辺mutを書くとwarningが出る理由は、pはmutではなく、あくまでも&mutであるためだろう。 つまり、そこに左辺mutを書いてしまう人はきちんと理解していないという意味ではなかろうか。
966 名前:デフォルトの名無しさん mailto:sage [2021/11/02(火) 07:53:30.47 ID:eth2zNwx.net] let mut ~~はそこで定義される変数が可変(再代入可能)になるもので、 &mut ~~はそこで作成される参照が可変になる、という理解なんだけど、 どうもしっくり来てない。引数の宣言で&mutとつけるとどうなるの、とかすぐ出てこない。
967 名前:デフォルトの名無しさん mailto:sage [2021/11/02(火) 08:18:58.33 ID:gnq/E+lb.net] let mutのmutはコード生成には不要だけど&mutのmutは必要だと言う話を聞いた
968 名前:デフォルトの名無しさん [2021/11/02(火) 09:44:55.98 ID:px0qcy1y.net] 950
969 名前:デフォルトの名無しさん mailto:sage [2021/11/02(火) 11:55:17.95 ID:22+2FiF4.net] let mutのmutはbindingがmutableかどうか &mutは型が&mut Tなのかどうか Cのconst pointerとpointer to constと同じ Rustはデフォルトimmutableなのでmutableにしたい場合にのみmutで修飾 普通使わないけどパターンマッチと組み合わせると let &mut mut x = &mut y; みたいな書き方もありうる
970 名前:デフォルトの名無しさん [2021/11/03(水) 12:07:17.82 ID:gDAMFAnt.net] mutが必要ってより、for mutにfor let mutにならないことが不思議
971 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 17:34:54.99 ID:eoGGfQG1.net] それは単にforの文法がlet不要なように設計されたってだけでは
972 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 18:34:42.48 ID:+koatzK+.net] let パターン = ... for パターン in iter match パターン ... fn hoge(パターン: TypeName, ...) ってことやぞ
973 名前:デフォルトの名無しさん [2021/11/03(水) 19:26:40.94 ID:6uw3PT+q.net] Rustにはif let Some(3) = v {}とか、 while let Some(i) = a {}とかあり。letは不変のキーワードじゃなく 右辺に対するパターンマッチ展開で、for letがないのは、forはfor..inしかなく、Cのようなfor ;条件;の文が 存在しないためという考えらしいです。。。
974 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 06:57:56.88 ID:9Ddr56R/.net] forで変数の初期化が要るみたいな発想になる時点でC由来の処理系に洗脳されているんじゃぁ・・・
975 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 13:00:03.95 ID:UnTZr4yd.net] for p in v { … } は v.into_iter().for_each(|p| …) と同じ機能たけど 長いメソッドチェーンな時など敢えてforでなくfor_each使ったりも
976 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 20:16:49.18 ID:UnTZr4yd.net] ただしfor文は値を返せないのが弱点かな イテレータならfor_eachの代わりにfoldしたりfindしたりあるいはmapやfilterなど色々処理して最後にcollectしたりと値を返せる
977 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 20:24:42.58 ID:faLe9vBn.net] >>958 forやwhileは、そもそもループが実行されないパターンがあるので、それは無理ってなったらしい だからloopでは値を返すことができるので、loopを使うぺし
978 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 21:17:21.49 ID:MjRPJM3Z.net] >>959 for式やwhile式がOptionを返してループ0回ならNoneで済む話ではないのでしょうか?
979 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 21:26:55.06 ID:sNasn9tC.net] forで値を返したいとか言ってるやつまだいたのかw
980 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 23:50:24.53 ID:faLe9vBn.net] >>960 ループ内は実行されないからNoneも返せないってことよ loopは明示的に自分でbreakするから許容 let test: = if true { 1 }; たとえば、これでtestにNoneが入るとかおかしいことになるってわかるっしょ? それと同じこと。
981 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 23:51:56.14 ID:Cqbrs2k1.net] 実際問題としてHITUYOU
982 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 23:52:15.61 ID:Cqbrs2k1.net] ごめん誤爆した。 実際問題として必要な場面がないだろ。
983 名前:デフォルトの名無しさん [2021/11/05(金) 08:00:41.30 ID:Q0weZe1J.net] forの話なら、これって今はどっちで書くのが一般的?ルールとして基本はHOFで書くのを やっぱり強制したいのだけど https://doc.rust-lang.org/stable/rust-by-example/fn/hof.html
984 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 13:18:20.54 ID:/SSooQm2.net] rust現場で使ってる人は何系のシステム作ってるん?
985 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 14:22:06.73 ID:pAK9gvBl.net] 現場で使ってる人なんていません
986 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 14:42:52.35 ID:Z0sGs5cT.net] 求人検索をしてみても、Rust使ってるとこなんて指で数えられるぐらいしかなさそうかな
987 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 15:22:01.85 ID:4VZvWnUi.net] とりあえずいつもの貼っておく https://www.rust-lang.org/production
988 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 15:29:07.01 ID:ShfctMVX.net] 試験的にGoからRustに切り替え中だよ。両方ともバックエンドとフロントエンドまでやってるのでそのまま移植出来て簡単…じゃなかった インフラはサクッと終わったけど、フロントは素のWasmで実装するもGoより遥かに複雑で難解なRustでやる意味は?的な事になって vDOM系フレームワークで実装するも、Non-vDOM系のが殆どの場面で速い事が分かったのでやり直し中 で、本番環境で運用できるのか?となると最初の印象に反して「出来る」と思うね。 動かし始めて不具合が出た時に、何処がヤバいのか分からない怖さがない。 過去の資産と経験則は捨ててRustのお作法に従うようにするのが大切、下手にアレを使いたいので使い回すとかやると余計苦労する。
989 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 19:10:07.53 ID:0gW7V402.net] >>970 もしよろしければオススメのRustフレームワークを教えてください
990 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 20:26:36.98 ID:RvCa6Qvn.net] ちんちんぶらぶらRustすぱーと
991 名前:デフォルトの名無しさん [2021/11/05(金) 20:33:04.86 ID:JniLXeAQ.net] うちではバイトの女子大生も使ってるが Rustを使うような企業はネット求人になんか頼らんだろうね、今のところ
992 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 21:52:24.97 ID:ShfctMVX.net] >>971 Dominator
993 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 23:26:41.71 ID:DvmJ6O3T.net] Dominatorってこれか https://github.com/Pauan/rust-dominator virtual DOM使わずゼロコストでリアクティブか ベンチマーク見るとVue/React/Angularなどは非常に遅いんだな https://rawgit.com/krausest/js-framework-benchmark/master/webdriver-ts-results/table.html Vanilla JSで頑張るのでなければRustでDominatorを使った方が良さそうってことか ウェブフロントエンドまでRustの時代が来るとは驚き
994 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 23:41:27.00 ID:7Nx3lyuG.net] おもしろそうだけど、メンテが辛くなりそう。仕事でそんなん大丈夫かしら?
995 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 01:14:13.09 ID:8rFQ20lW.net] ダメに決まってんじゃん。。無理やり使おうとしてるのが丸わかりだわ。
996 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 01:50:27.76 ID:BsA8c5Gl.net] >>975 少くともその表に載ってるsolidってのは非vDOM系のJSフレームワークだけど… その表ではDominatorとどっちが速いですか? そしてそれはなぜですか? それを勘案しても、 Vanilla JSで頑張るのでなければRustでDominatorを使った方が良さそうってなりますか?
997 名前:デフォルトの名無しさん [2021/11/0
] [ここ壊れてます]
998 名前:6(土) 01:55:12.94 ID:eYFGObaB.net mailto: フロントエンドのwasmでrustを使う意味が分からん、assemblyscriptなんかでts変換したほうがよっぽど 人材確保も容易で速度も出そうだけど、まあ全部1つの言語に統一したいという欲望は分かるが [] [ここ壊れてます]
999 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 08:58:19.69 ID:8rFQ20lW.net] その種の願望はいつだって失敗してるのに何回でもこだわるバカが出てくる。 ビジュアルプログラミングとかノーコード並みに愚かだわ。
1000 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 09:42:55.78 ID:DjcFpt23.net] 夢は終わらねえ!
1001 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 10:40:16.97 ID:YOvBnwY8.net] htmlマクロが微妙だよな。yewもしかり マクロの仕様理解して書かないといけないからwebpackみたいなコンパイラー挟んでreact,vueみたいなhtmlベースでかけたら普及進むと思う
1002 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 10:43:29.52 ID:gG2xt4rU.net] フロントエンドはElmで書いた方がいいと思う Elmの設計をパクったRust用フレームワークよりElmそのもので書いた方がいい
1003 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 11:32:19.13 ID:dvoeGWeX.net] >>979 WasmはもともとC/C++をブラウザのフロントエンドで使いたい願望から 始まったものだ。 意外に思うかもしれないが、C/C++を使いたい人はRustの1000倍くらい多い。
1004 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 12:19:33.04 ID:v/Totsm8.net] >>979 AssemblyScriptはメモリ管理GC問題があるし文法が単にTSの限定サブセットに過ぎないため色々と辛すぎる そのためWebAssemblyでの使用言語調査結果もこんな状況でRustが圧勝 https://blog.scottlogic.com/ceberhardt/assets/state-of-wasm/desired-language.png >>978 Wasm⇔JSのオーバーヘッドがあるので処理が少なくほとんどDOM操作になる時だけはJSのみで書いたほうが速い (当たり前) そのためほぼDOM操作のそのベンチマークではRustフレームワークがわずか数%遅くなっているが現実には処理内容次第ですぐに逆転する >>983 Elmは型クラス(Rustではtrait)がなく例えば抽象的なイテレータも持てず色々と辛い このスレはRustにアンチな人がRustを貶めようと常駐して頑張ってるようだけど Rustを用いるのがベストな方法な場合が非常に多いよ
1005 名前:デフォルトの名無しさん [2021/11/06(土) 16:27:09.97 ID:Y613N0Im.net] もはや人類の発展はRustにかかっていると言ってもいい
1006 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 16:30:35.71 ID:3ClRyBcI.net] Rustのお陰でハゲが治りました!
1007 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 16:45:26.77 ID:EdJhZAmA.net] C++ドロップアウターの掃き溜まり
1008 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 16:57:33.02 ID:5yvdtcf3.net] similar word exists: `掃き溜め` similar word exists: `吹き溜まり`
1009 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 21:24:09.65 ID:8rFQ20lW.net] rustがベストな時が多いとかよくそういうデマを平気で流せるよね。。
1010 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 21:39:59.60 ID:1qW/ULGd.net] シャドーイングがよくわかりません。 変数名によって中身が一意に決まらなくなることによって、安全性も下がるし並列性?も確保できなくなる気がするのですが、変数が全mutableな言語より安全性マシだしRustは関数型言語じゃないから並列性そこまで重要視してないし書き味のが大事だぜってことですか?
1011 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 21:47:09.97 ID:PDDtrjdC.net] 安全性も下がるし並列性?も確保できなくなる気がするのは気のせいではないでしょうか
1012 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 22:22:33.53 ID:9KDcj+aF.net] >>991 プログラミング初心者には難しいかもしれないけど 一般的にプログラミング言語ではスコープという概念があってスコープが異なれば同じ変数名でも全く別のものとして認識され格納場所は異なるし型が異なってもよい その中でもブロックスコープは多くのプログラミング言語で採用されていてブロックが始まると新たなスコープが出来て同じ変数名でも全く別のものとして扱われる 今回のシャドーイングスコープも同様でシャドーイングの時点から新たなスコープが始まるため同じ変数名でも全く別の変数として扱われる だから安全性は全く下がらないし並行でも並列でもシャドーイングで問題が生じることはない むしろシャドーイングの利用で利便性が高まっていることがプログラミング経験を重ねると理解できる
1013 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 22:44:27.14 ID:EdP5MzkQ.net] ダイナミックスコープはいらない子だった・・・?
1014 名前:はちみつ餃子 mailto:sage [2021/11/06(土) 23:40:03.82 ID:tiSLGdpm.net] ダイナミックスコープがデフォルトの言語なんて Emacs Lisp くらいしか見たことないわ。
1015 名前:991 mailto:sage [2021/11/07(日) 06:37:58.76 ID:It35Zcf7.net] 意図したシャドーイングならともかく、間違って同じ変数名つけたコード片突っ込んでしまった系だと他言語にあるらしい2重宣言エラーないの怖くないですか? 新たなスコープが生まれるので並列性に問題ないことはなんとなく理解できました
1016 名前:デフォルトの名無しさん [2021/11/07(日) 07:11:27.61 ID:F+zOFISG.net] D言語の再来。
1017 名前:デフォルトの名無しさん mailto:sage [2021/11/07(日) 07:13:38.67 ID:pJhT3MIE.net] 次スレは? >>980 が1時間待っても立てなかったら俺がやる
1018 名前:デフォルトの名無しさん mailto:sage [2021/11/07(日) 08:48:10.79 ID:N5JIOUKU.net] 質問いいですか
1019 名前:デフォルトの名無しさん mailto:sage [2021/11/07(日) 10:09:41.36 ID:k2ts2WHd.net] くたばれ
1020 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 74日 11時間 14分 14秒
1021 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています