Rust Part6
■ このスレッドは過去ログ倉庫に格納されています
while let Ok(t) = honyarara() {}
と書いた時にtがcannot infer typeと言われた場合どういうふうに型を指定すれば良いのでしょうか?
具体的にはこれの後半のデシリアライズの部分をループに書き換えたいのですが…
https://gist.github.com/rust-play/fa2d277652052fcbd6a72273a0cb70ce while let Ok(v) = a as Result<String, ()> { >>691
()の部分も指定したらいけました、ありがとうございました rustでreduxやろうとするとかなかなか面白い。案の定middleware周りで詰まってるが
これがうまく処理できれば結構いいんじゃないか。
https://github.com/rust-redux/rust-redux 本気で手を出したこと無いんだけど、そういうフレームワークをRustに持ってきて良い感じのabstractにできるの?
メモリとかリソースの確保のコードで見づらくなったりしない? また今年のsurveyでもrustが一番好かれている言語になったな
rust好きなんだけど正直ここまで好かれる理由がわからない C++に嫌気が差した潜在的なユーザーが多かったのでは? ブロックがその最後の値を持つ式だというのはいい。
そして、式にセミコロンを付けると文になるというのもわかる。
でもその両者を混ぜるとあんな残念な文法に。 c言語とどっちが性能高いの?
なんかRustの方が性能良いみたいなベンチがちょっとあるみたいだけど。 >>697
> でもその両者を混ぜるとあんな残念な文法に。
その残念な文法は具体的にどこをどうすれば良い文法になるの? こうする。
Bosque Programming Language
https://www.microsoft.com/en-us/research/project/bosque-programming-language/
> The Bosque programming language is designed for writing code that simple, obvious, and easy to reason about for both humans and machines.
https://github.com/Microsoft/BosqueLanguage 残念ってのはブロックの最後にセミコロンを付けちゃうと値を返せないってとこね。
>>697に書いたようにそれぞれ合理的な選択を組み合わせた結果だから解決策があるとは限らない。
ただ、式文はUnit型じゃなくて式の値を持つってことにするのは無理だったのかな。 >>695
イヤでも使わなきゃならないのが優れた言語
嫌な奴はさっさと逃げ出して残った少数にもてはやされるのが(ru
>>698
ベンチの取り方も知らないみじく者にもてはやされるのが(ru >>701
代入が値を返す場合、代入された値が戻り値へとmoveされてしまうから問題がありそう 代入式の値はUnitでいいんじゃなかろうか。もともとCのような代入の連鎖はできないわけだし。 https://play.rust-lang.org/?version=stable&mode=debug&edition=2015&gist=765849a4e776e00b0c614fc941b02ecf
Defaultを実装してない構造体のフィールドのうちDefaultを実装してるフィールドだけまとめてdefault()で初期化するような記述方法は無いでしょうか?
イメージとしては
let s = S { nd: NonDefault::new( "foo" ), u: Default::default(), i: Default::default() } ;
の部分を
let s = S { nd: NonDefault::new( "foo" ), _: Default::default() } ;
のような形で書けないでしょうか >>706
マニュアルに
SomeOptions { foo: 42, ..Default::default() }; >>707
ありがとうございます、ただそれだとSomeOptionsがDefaultを実装している場合の記法ですよね?
(実際試してもthe trait bound `SomeOptions: std::default::Default` is not satisfiedとなります)
質問としてはSomeOptions自体はDefaultを実装していないけど、そのフィールドのうちDefaultを実装している型の値はまとめてdefault()で初期化したいってことなんですが… そういうときは初期化子直接使うんじゃなくてコンストラクタ定義すんのよ κeenさんの所でもまだ出てないのに売れてるらしいと書かれてたけどどういう事なんアレ? 都内の大型書店には結構出てるし電子版は連休前が発売日だったはず 結局ここまでまともなソフトが出ないってのはそういうことなんだな。 メインでrust使ってる企業あったら入りたいもんだけど、実際使ってる企業あるの?
モダンな言語だとせいぜいGoとかelixirじゃない? 世界コンピュータ将棋選手権に出た強豪ソフトがRust製で
公開予定 人間からすれば強豪でも、予選落ちで強豪ソフトと呼ぶのは違う気もする Rustの本どんなもんかとアマゾンで見てみたら、
中華業者の星5レビューばっかで色々と察した
そもそもの話の言語自体が胡散臭いのも納得 ライフタイム引数のクソさはもうどうにもならんな。
変な省略ルールとかつけて逆に分かりづらくなるとか本末転倒もいいとこだ。 省略ルールのありなしに関わらず分かりづらいだけでは https://ja.wikipedia.org/wiki/Rust_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)
>実行時速度性能はC言語と同等程度である[8]。
これマジ? こんな記事を見つけた
>Rustのコードを用いたこのためのテストの平均はCコードの実行したものの3.040倍と同じくらいだ。
>この関数により、我々はRustが平均的に2.036倍Cよりも遅いことを知った。
やはりCの方が速いな。省メモリという点でもCが一番だし >Rustが事実上Cよりも遅いままで終わってしまったという事実は、より落胆させられた。
>また、全体を通してRust言語は、
この手の高水準な完成されたシステムを作る手助けをすること、
そしてこの領域において少量の変更で効果的にCを置き換えることができることを示すことができた。
現状のRustはCを置き換えれないけど、
将来的な改善まで含めればできるはずだと主張してるな。。 Cと同等はさすがに無理にしても、もう少しCに迫る性能が出ないと、C/C++から脱出したい人の受け皿にはなれないんじゃないか? あるいはCの2〜3倍遅い程度なら許容範囲内ということで割り切るしかないんだろうか。 >>732
nimのllvm版 nlvm はどうよ? >>724
ライフタイムとムーブについてはそこまで複雑な概念ではないよ。
ライフタイムに対するシンタックスがヘンテコなだけで。 RustでLinuxカーネルを書き直す時代はこなさそうだな >>726,727
メモリを自分で面倒見る分とセキュリティチェック甘い分早いだけだからcでリージョン使ってメモリ管理して配列の境界チェックとかもすれば似たようなもんだ。
rustのpanicはきれいに落とすぞ。ただ、ランタイムデカイ分とrust用のメタデータ含む分でフットプリントはcの方がいいと思う。
>>734
リージョン推論間違えるか効率悪い位ならリージョン指定させてほしい時はある。 >>735
新しいOS作れば?
なんだったらAndroidみたいにLinuxの上に構築。 それをRustでやってもCで書かれたOSを上回れないという話でしょ https://discourse.redox-os.org/t/redox-performance/966
まだ初期段階だから比較しないで、みたいな事言ってる
最終段階までいってもCを超えると思えないんだが
しかもLinuxは組み込みでも使われてるがそれはCが省メモリだからで
Rustが勝てる見込みは無いと思うんだがなあ 原理的には負ける理由もないと思うけどな。
Cは基本ノーチェックで脆弱性が見つかったらチェック入れるのに対して
Rustはいろいろチェック入ってるのをunsafeで外してパフォーマンス上げていくから
最終的に同じところに収束する気がする。
まぁ途中段階とか未知の脆弱性を放置する前提なら勝てないんだけど。 中華ステマ企業が今押せと言われてるイチオシの言語Rust使ってるやつおるん? そのサイトいっつも思うんだけどベンチマークの並べ方恣意的じゃない?
vs Cではmandelbrotが下の方にあるけど
vs Javaでは上から2番目
Rustが勝利している項目では太字だけど
Cが勝利している項目では太字にならない
vs C++では、5項目でRust勝利、5項目でC++勝利で互角なのに、
Rustだけ太字でしかもRustが勝利したベンチマークから並べられてる。
俺はそのサイト少しも信用してない さらに言えば言語によって使用されるベンチマークがいつも違う。
勝たせたい言語のためにベンチマークを選択している可能性がある。
新手のマーケティングじゃないの? 恣意的の意味するところがわからんけど
C++からだとRustに勝ったベンチマークだけ太字
C++が勝利したベンチマークから並べられるよ
使用されるベンチマーク云々はちょっとわからん >>742
Amazon Intel Microsoft Dropbox Nokia Fastly DiscordはGitHubでみた ソース公開されて比較的新しいコンパイラを使って測定されるbenchmarksgameは信頼ならなくて
2016年に書かれた中国語のブログにあったフィボナッチ数列のベンチマーク(ソース非公開)の方が冷静? rust推す人もステマする暇があったらrust dockerでも実装すりゃいいのに。
性能と安全性でいえばgoの実装以上のものができるんでしょ? 中華ステマ企業がって話があったから中国語圏でどうなのかなと思って調べただけ
あとそのサイトを信じるなら、5項目でRust勝利、4項目でC勝利で、
RustがCより速いという事になる。
その結論は信じがたい。 モジラのステマと買収から中国の陰謀まで進化したのか rustで書かれたコンテナエンジンはオラクルが作ってたろ
goのgcによるボトルネックがひどすぎるとかで
速度のベンチマークなんてほとんど意味ないだろ
生産性のがはるかに大切 n-bodyのソースとか見ればわかると思うけど、メモリレイアウトとかSIMDとかほぼCと同等まで詰めてあるから、Cに勝っても何の不思議もない。
実質gccとllvmの最適化対決って感じでは。
Arena使って素朴に書かれたbinary-treesが勝ってるのは結構すごいと思う。 そりゃ互換実装なんてよっぽどメリットがないと使われないでしょ。
railcarは完全互換ですらなかったし。
firecrackerとかlucetみたいな独自路線の方がまだ見込みあるんじゃない? >>757
オーバーヘッドもなくセキュリティー的にも安定な実装というメリットがある
はず。 GitHub’s Top 100 Most Valuable Repositories Out of 96 Million
ttps://hackernoon.com/githubs-top-100-most-valuable-repositories-out-of-96-million-bb48caa9eb0b
rust 5位だてよ ランキングもベンチマークもいくらでも恣意的に操作できる
実際に製品としてどんくらい世に出たかが全てだけど
Rustはどこの企業も口を揃えて「内部実装で使ってます」って言うだけで
動いてるコードを見たことがない >>763
企業で使ってもクローズドソースならそもそも何使っても見れないんじゃない? 全く使う気にならないツールばっかりってのがすげーな。 プロダクトがあるか無いかより、「xxxで作ってたものをrustで作り直したよ!」って話が多いのが気になる
既存の作り直しよりも新規性のある何かが出来て、それを皆が使いたくなって言語が広まるってのが普通だと思ってる
(goならdockerとか)
rustでそういうのがまだ見えないのはちょっと嫌な感じはしてる もともとC++は辛いので作り直せる言語を作ろう
だからしょうがないんじゃない C++はまだ進化中(複雑化中)だし、C++使ってる分野では特に移行する必要がないというか Rustは学習を終えたとしてC++より開発効率良いの? >>768
重箱の隅で申し訳ないが、Goなのはk8sだと思う
Rustでキラーアプリ出ないのはある意味当然で
そういうものって未完成でもとりあえずぶち上げてコンセプト見せないと流行らないんだが
Rustって真逆で完璧に作らないと動かない言語だから
キラーアプリの作成とそもそも相性が悪い つまりrustで作られたものは完全無欠ってこと?
そんなばかな
そもそもなんでメジャーな採用事例を気にする必要があるの?
自分が作ってるプロダクトがrustと相性がよければ使えばいいだけじゃん キラーアプリってあれか
RubyがRailsで人気爆発あるいは
ディープラーニングやるならPython
みたいな話期待してるのか? C++にはキラーアプリがないと思うけどそれでいいと思う そもそもキラーアプリが言語の普及に影響したのってRailsくらいだと思うけど。
別にdockerやk8sのユーザがgoで実装しなければならないってことはないでしょ。 >>771
rustで学習を終えてc++で作るのが一番効率が良い。
つまり学習用と割り切ればかなり意味のある言語ではある。 C++で痛い目にあってからRust覚えた後にC++の最新verに戻るのが最適解
じゃないとRustの諸々の安全装置がなぜあるか理解し難く面倒臭いだけと思われてしまう C++に戻るつもりが戻れなくなってしまったな。
最新ならC++の言語機能には特に不満はないけど、標準のテスト・ビルドツール・パッケージマネージャがないのが辛すぎる。
戻った人たちはその辺どうしてるんだろう…。 いろんなOSSを触ってるとプロジェクト毎に独自の流儀で、それぞれにいちいち合わせるのが面倒だし、
新規プロジェクトでも何を採用するかで悩む。
別に標準化とかされなくてもデファクトスタンダードが一つに決まってれば十分なんだけど。 C++とくらべりゃRustのほうがスッキリしてるやろ
Cのほうがもっとスッキリしてるけど > 標準のテスト・ビルドツール・パッケージマネージャ
最近のプログラミング言語はそれぞれがこのシステム作るよな
言語を超えた協調もなく >>786
そりゃ、ライブラリの名前だけでも共用すればいいのに、と思いますがそれもできていないし… ■ このスレッドは過去ログ倉庫に格納されています