Mozilla発のプログラミング言語「Rust」のスレです
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
前スレ
プログラミング言語 Rust 3
https://mevius.5ch.net/test/read.cgi/tech/1495343069/
探検
プログラミング言語 Rust 4
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/10/14(土) 17:38:14.04ID:uWD69LeP247243
2017/11/25(土) 01:18:11.42ID:P27kKgvI >>246
ありがとう。SVGって文字を扱えるんだっけ・・・って調べてみたら扱えるみたいですね
行けそうな気がしますがGPL/LGPL系のライセンスは使えるライブラリを制限するので避けたいです
C++だけどsvgrenとか?情報少なすぎてちゃんと動くのかすら不明。日本語フォントとか大丈夫なのだろうか
CでラップしてさらにRustでラップするようなのかな
ありがとう。SVGって文字を扱えるんだっけ・・・って調べてみたら扱えるみたいですね
行けそうな気がしますがGPL/LGPL系のライセンスは使えるライブラリを制限するので避けたいです
C++だけどsvgrenとか?情報少なすぎてちゃんと動くのかすら不明。日本語フォントとか大丈夫なのだろうか
CでラップしてさらにRustでラップするようなのかな
248デフォルトの名無しさん
2017/11/25(土) 05:40:17.26ID:lbdvAXfn Javaも最初の頃はマトモに書いてもコンパイル通らなかったこといくらでもあったもんな。
249デフォルトの名無しさん
2017/11/25(土) 12:29:42.95ID:r7AGpeaJ250デフォルトの名無しさん
2017/11/25(土) 13:02:12.25ID:kotn+Cy/ 終わった話題に粘着する人キター
251デフォルトの名無しさん
2017/11/25(土) 13:14:26.95ID:lbdvAXfn RustでGUIってイケてる?っていうか、GUIライブラリ多すぎるだろ・・、
GtkとQtメインでやってるけど、JavaFXもいいし、Pythonなんてバインディング沢山あるし、
Rustなんてやりだしたら、もうキリがないよ・・・
GtkとQtメインでやってるけど、JavaFXもいいし、Pythonなんてバインディング沢山あるし、
Rustなんてやりだしたら、もうキリがないよ・・・
252デフォルトの名無しさん
2017/11/25(土) 13:15:21.53ID:lbdvAXfn もうどれか一つでGUI決めてくれねえかな・・。スゲエ、面倒。
253デフォルトの名無しさん
2017/11/25(土) 13:19:24.38ID:ZL0yjpO8 おじいちゃん、GUIはブラウザってきまったでしょ?
254デフォルトの名無しさん
2017/11/25(土) 13:39:30.15ID:alyoZhJV GUIはElectronみたいな方向に行ったほうがいいのかね
255デフォルトの名無しさん
2017/11/25(土) 13:42:04.43ID:kotn+Cy/ Blink を Servo で置き換えた Selectron 来い
256デフォルトの名無しさん
2017/11/25(土) 14:09:00.72ID:OgtFvRib >>238
バカが調子に乗って新しい言語使って書き散らしたコードをメンテする経験をすればわかるようになるよ。
バカが調子に乗って新しい言語使って書き散らしたコードをメンテする経験をすればわかるようになるよ。
257デフォルトの名無しさん
2017/11/25(土) 14:37:28.91ID:mxSpQEHX 言語じゃなくてそのバカをdisれよw
258デフォルトの名無しさん
2017/11/25(土) 14:41:23.39ID:P27kKgvI 個人的に検討するGUIフレームワーク
簡単な奴→MS HTAやElectronなど。Webで使われている技術で実装できる
凝った奴→wxWidgets。高機能かつ高速、大抵の物は作れるが罠もある。もしくはAPI直叩き
昔結構悩んだけど結局上記あたりに落ち着いた。当時検討した物
GTK→LGPLウザイ。パフォーマンスが良くない(最近は良くなった?)
Tk→低機能で作れない物がある。パフォーマンスが良くない
Qt→LGPLウザイ。パフォーマンスが良くない
JavaFX→パフォーマンスは悪くないがJREの初期化(≒起動)に時間がかかる
>>256
バカに無計画にコードを書かせているバカが問題なのであって言語が悪いわけではないだろう
簡単な奴→MS HTAやElectronなど。Webで使われている技術で実装できる
凝った奴→wxWidgets。高機能かつ高速、大抵の物は作れるが罠もある。もしくはAPI直叩き
昔結構悩んだけど結局上記あたりに落ち着いた。当時検討した物
GTK→LGPLウザイ。パフォーマンスが良くない(最近は良くなった?)
Tk→低機能で作れない物がある。パフォーマンスが良くない
Qt→LGPLウザイ。パフォーマンスが良くない
JavaFX→パフォーマンスは悪くないがJREの初期化(≒起動)に時間がかかる
>>256
バカに無計画にコードを書かせているバカが問題なのであって言語が悪いわけではないだろう
259あ
2017/11/25(土) 14:57:49.91ID:UfRnLBpA >>249
良いだろ。というか、それらを止めるのは現実的な方法では不可能。イエスマンを集めて楽しくワイワイ()になるぞ。
記名制のフォーラムでも本気の荒らしや本気のアスペや本気の無自覚は幾らでも居たんだから。
良いだろ。というか、それらを止めるのは現実的な方法では不可能。イエスマンを集めて楽しくワイワイ()になるぞ。
記名制のフォーラムでも本気の荒らしや本気のアスペや本気の無自覚は幾らでも居たんだから。
260デフォルトの名無しさん
2017/11/25(土) 17:24:23.29ID:oLmjygAJ hyperってシングルスレッドなんなね
ベンチマークも結果がバラバラでよう分からん
ベンチマークも結果がバラバラでよう分からん
261デフォルトの名無しさん
2017/11/25(土) 21:02:37.96ID:OgtFvRib262デフォルトの名無しさん
2017/11/25(土) 21:09:22.03ID:3zoUsuFj >>256
そういうやつって言語関係なく台無しにしてるんじゃね?
そういうやつって言語関係なく台無しにしてるんじゃね?
263デフォルトの名無しさん
2017/11/25(土) 21:22:20.34ID:LOgLWN1+ >>262
確かに、そういう奴ってどの言語使っても大体はクソコードを書くだろうな。
ただし、ベストプラクティスを教えてくれるやつがいるかどうかで差はあると思う。
新興言語はベストプラクティスを教えてくれる奴が極端に少ないから、余計にひどくなる。
対して、普及している言語は周りにベストプラクティスを教えてくれる人がいれば
バカでもある程度はマシなコードを書く(書くことを強制される)んじゃないかな。
確かに、そういう奴ってどの言語使っても大体はクソコードを書くだろうな。
ただし、ベストプラクティスを教えてくれるやつがいるかどうかで差はあると思う。
新興言語はベストプラクティスを教えてくれる奴が極端に少ないから、余計にひどくなる。
対して、普及している言語は周りにベストプラクティスを教えてくれる人がいれば
バカでもある程度はマシなコードを書く(書くことを強制される)んじゃないかな。
264デフォルトの名無しさん
2017/11/25(土) 21:32:32.35ID:OgtFvRib265デフォルトの名無しさん
2017/11/25(土) 21:34:35.12ID:WRH8mdq5 そのバカと言語disに走るID:OgtFvRibは同レベルだよ。
266デフォルトの名無しさん
2017/11/25(土) 23:18:19.74ID:3zoUsuFj >>265
単語の断片に反応してるだけの思い付き厨だろうな。
単語の断片に反応してるだけの思い付き厨だろうな。
267デフォルトの名無しさん
2017/11/26(日) 00:38:40.95ID:FoFKguj9 >>264
それって人事が無能なだけじゃあ。まぁ日本にそういう会社は多いんだけどな
それって人事が無能なだけじゃあ。まぁ日本にそういう会社は多いんだけどな
268デフォルトの名無しさん
2017/11/26(日) 01:44:59.31ID:prdTxomD いうほど言語disに走ってる訳ではないけどね。
ただ言語disに走る気持ちは理解できるってこと。
他の言語disパターンとしては単純に自分があんまり知らんから
理解する時間の節約のための dis かな。
ただ言語disに走る気持ちは理解できるってこと。
他の言語disパターンとしては単純に自分があんまり知らんから
理解する時間の節約のための dis かな。
269デフォルトの名無しさん
2017/11/26(日) 02:00:15.38ID:zvEdo3BX rustは組み込み向けの新言語になると思ったけど、全然流行らんな
早くC++から脱したいのに
早くC++から脱したいのに
270デフォルトの名無しさん
2017/11/26(日) 02:37:39.20ID:8lbYkPLC 昔の一部の組み込み系では製品の安定を求めるために
コンパイラのバージョンアップすら信用しない(=古いバージョンを使用し続ける)ことがあったなー
コンパイラのバージョンアップすら信用しない(=古いバージョンを使用し続ける)ことがあったなー
271デフォルトの名無しさん
2017/11/26(日) 02:50:50.14ID:FcDi9KjV 『"(Rustが売りにしてるような部分に関して)良いコード"を書きたいと思っているh人』にとっては素晴らしい言語となる可能性の高い言語がRust
『"良いコード"の定義が違う人』にとっては
『"良いコード"を書きたいと思っているわけではない人』にとっては
『"良いコード"の定義が違う人』にとっては
『"良いコード"を書きたいと思っているわけではない人』にとっては
272デフォルトの名無しさん
2017/11/26(日) 02:52:44.07 Rustがコケると得するのは誰か
273デフォルトの名無しさん
2017/11/26(日) 03:23:13.42ID:FoFKguj9274デフォルトの名無しさん
2017/11/26(日) 03:57:56.67ID:2SXqucAT >>273
rustが使いたいからその仕事を立ち上げるって明らかに手段と目的が入れ替わってますよね
rustが使いたいからその仕事を立ち上げるって明らかに手段と目的が入れ替わってますよね
275デフォルトの名無しさん
2017/11/26(日) 09:03:05.51ID:d0SJzNDY276デフォルトの名無しさん
2017/11/26(日) 09:09:55.82ID:4gwTKbSY この糖質「提灯」って言葉に執着してるね。
277デフォルトの名無しさん
2017/11/26(日) 11:03:05.21ID:2p4Fc6MR278デフォルトの名無しさん
2017/11/26(日) 11:11:18.98ID:d1Efc0fJ >>263
ガウディ本とかで計算モデルを理解してれば、慣れてるという理由で合わない用途に無理矢理押し込もうとしないんだろうけどね。
ガウディ本とかで計算モデルを理解してれば、慣れてるという理由で合わない用途に無理矢理押し込もうとしないんだろうけどね。
279デフォルトの名無しさん
2017/11/26(日) 11:35:06.02ID:chAORxhD 当人は必死だけどすっかり珍獣扱い
280デフォルトの名無しさん
2017/11/26(日) 16:10:47.30ID:F1AvYoB1 少なくともswiftに採用しようとしてる機能を先行実装しているだけでも価値ある
281デフォルトの名無しさん
2017/11/26(日) 22:44:13.85ID:mC/sVuBh Rustが成功したから真似されたんじゃw
Apple信者さすがの言い草
Apple信者さすがの言い草
282デフォルトの名無しさん
2017/11/26(日) 22:54:59.36ID:hn9uvYDF >>281
成功?成功ってなんだっけ?
成功?成功ってなんだっけ?
283デフォルトの名無しさん
2017/11/26(日) 23:15:44.20ID:4gwTKbSY Swift の仕様変更と比べると、Rust のアップデートはかなり大人しいよな。
284デフォルトの名無しさん
2017/11/26(日) 23:36:42.57ID:BDpjXZu3285デフォルトの名無しさん
2017/11/27(月) 01:38:36.80ID:A6Q33Aj/ >>284
循環グラフとか動的計画法とか書けない言語のどこが破綻がないのかいってみろ工作員
循環グラフとか動的計画法とか書けない言語のどこが破綻がないのかいってみろ工作員
286デフォルトの名無しさん
2017/11/27(月) 01:55:07.26 RustでDPできないの?
287デフォルトの名無しさん
2017/11/27(月) 02:01:44.73ID:Kmvld91s 出来ない人がいるだけ
288デフォルトの名無しさん
2017/11/27(月) 07:36:56.24ID:30J1+TRs 簡単にwasmコンパイルできる環境が整ってきたな
https://twitter.com/badboy_/status/934742946754244613
今、試したけど、Windowsでも動いた。
cargo-wa は動かんかったけど。
https://twitter.com/badboy_/status/934742946754244613
今、試したけど、Windowsでも動いた。
cargo-wa は動かんかったけど。
289デフォルトの名無しさん
2017/11/27(月) 16:32:30.04ID:UGzoAGct このエラーメッセージ、表示されるときと(当該箇所の修正をしていないのに)も関わらず表示されないときがある
Why?
error[E0605]: non-primitive cast: `{integer}` as `f64`
= note: an `as` expression can only be used to convert between primitive typ
es. Consider using the `From` trait
このエラーメッセージが表示されるのは
このエラーメッセージの示す箇所と全然無縁な箇所でコンパイルエラーが出たときに同時に表示される
そしてその他所であるコンパイルエラーを解消するとこのエラーメッセージも同時に消える
Why?
error[E0605]: non-primitive cast: `{integer}` as `f64`
= note: an `as` expression can only be used to convert between primitive typ
es. Consider using the `From` trait
このエラーメッセージが表示されるのは
このエラーメッセージの示す箇所と全然無縁な箇所でコンパイルエラーが出たときに同時に表示される
そしてその他所であるコンパイルエラーを解消するとこのエラーメッセージも同時に消える
290デフォルトの名無しさん
2017/11/27(月) 22:23:59.13ID:0avMxfTz 言語構文とツーリングを改善したRust 1.21
https://www.infoq.com/jp/news/2017/11/rust-1-21-released
「Rust 1.22」リリース
2017年11月27日17:00
https://mag.osdn.jp/17/11/27/170000
https://www.infoq.com/jp/news/2017/11/rust-1-21-released
「Rust 1.22」リリース
2017年11月27日17:00
https://mag.osdn.jp/17/11/27/170000
291デフォルトの名無しさん
2017/11/27(月) 22:38:51.64ID:zgUQvI9i >>270
実際、g++ なんかはバージョン違うと相当挙動違うけどね。
実際、g++ なんかはバージョン違うと相当挙動違うけどね。
292デフォルトの名無しさん
2017/11/28(火) 01:05:16.27ID:oL6iYiK7 >>289 エラー時には情報足りなくてusize等に推論してるから、かなあ
構文チェック -> 型推論&チェック -> ボローチェッカーって順番でエラー出してる感じだけど、
関係無い場所でのエラーのせいでas f64してるローカル変数の型推論が不十分な可能性がある
型推論は重い処理だから何らかの最適化のせいでエラー時の挙動が分からないのではないか
構文チェック -> 型推論&チェック -> ボローチェッカーって順番でエラー出してる感じだけど、
関係無い場所でのエラーのせいでas f64してるローカル変数の型推論が不十分な可能性がある
型推論は重い処理だから何らかの最適化のせいでエラー時の挙動が分からないのではないか
293デフォルトの名無しさん
2017/11/28(火) 01:05:23.35ID:YEKXo1x2 Rustでイミュータブルに拘る人は何なの?ミュータブル使えよ
294デフォルトの名無しさん
2017/11/28(火) 01:26:37.66ID:9rdMMleK ミュータブルなんて怖いもの使えないよ〜><
295デフォルトの名無しさん
2017/11/28(火) 01:38:14.99ID:YEKXo1x2 ミュータブルにする必要のない箇所をイミュータブルにする
基本はミュータブルで使え、ミュータブルしてなかったらコンパイラが教えてくれる、そのときイミュータブルに変更すればいい
基本はミュータブルで使え、ミュータブルしてなかったらコンパイラが教えてくれる、そのときイミュータブルに変更すればいい
296デフォルトの名無しさん
2017/11/28(火) 02:15:45.91ID:OnNJR7WO ID:YEKXo1x2
完全に頭おかしいな
完全に頭おかしいな
297デフォルトの名無しさん
2017/11/28(火) 05:26:38.97ID:9EzjspMa Rustでイミュータブルに拘るのは、TypeScriptで型付けることに拘るようなもん
298デフォルトの名無しさん
2017/11/28(火) 06:36:09.88ID:oe1VgQrD いミューダブルって、Cellの話をしているの?
299デフォルトの名無しさん
2017/11/28(火) 06:49:49.21ID:WfYnw+8u 最近勉強し始めたんだけど、デフォでイミュータブルなのに思いのほかmutキーワード使う局面が多くて面食らってる。
300デフォルトの名無しさん
2017/11/28(火) 06:56:41.60ID:9EzjspMa イミュータブルに拘ると、Scalaとかでもそうだが、コピーだらけになる
コピーを恐れてるとイミュータブルを徹底できないよ
コピーを恐れてるとイミュータブルを徹底できないよ
301デフォルトの名無しさん
2017/11/28(火) 06:59:54.84ID:bNHGW3XK コピーってmut並みに最適化してくれんの?
302デフォルトの名無しさん
2017/11/28(火) 07:35:10.58ID:oe1VgQrD あ、そういうこと。むりやりイミュータブルにする人たちがいるのか
303デフォルトの名無しさん
2017/11/28(火) 09:28:24.80ID:L9vMnZgT 静的型付け初めてなんだけどいきなりRustは敷居高いだろうか
304デフォルトの名無しさん
2017/11/28(火) 10:02:32.22ID:hv4LFVGU305デフォルトの名無しさん
2017/11/28(火) 12:38:41.40ID:Q+QzpY2X イミュータブルとかメモリを富豪的に使うだけで性能はなんら上がらない、いかにもお偉いさんが机の上だけで考えたクソ手法だろ
なんでFortranやCが現役なのか考えたこともないやつがイミュータブルをもてはやす
なんでFortranやCが現役なのか考えたこともないやつがイミュータブルをもてはやす
306デフォルトの名無しさん
2017/11/28(火) 12:59:41.96ID:ZfJDlsQ3 メモリが富豪的って、それお前の設計が悪いだけやで
307デフォルトの名無しさん
2017/11/28(火) 13:02:27.70ID:318e3gj2 それは言い過ぎだろ
なんでもイミュータブルにするべきとは思ってないが、
並列性が必要なプログラムではイミュータブルは重要視しているよ
並列性が性能に直結しない(難しい)のは残念な話だけど……
なんでもイミュータブルにするべきとは思ってないが、
並列性が必要なプログラムではイミュータブルは重要視しているよ
並列性が性能に直結しない(難しい)のは残念な話だけど……
308デフォルトの名無しさん
2017/11/28(火) 13:47:27.77ID:Q+QzpY2X309デフォルトの名無しさん
2017/11/28(火) 14:14:02.57ID:hv4LFVGU このバカ、コンパイラが良きに計らうってことを知らんのか?
310デフォルトの名無しさん
2017/11/28(火) 14:26:19.19ID:GpBjXyhn311デフォルトの名無しさん
2017/11/28(火) 14:42:06.12ID:LCKhcLzq const に異常にこだわるくせに異常に長い関数書く馬鹿は見たことあるな。
その前に関数切り出せと。
たぶん Rust が一般に広まるとボローイングルールをまともに理解できなくて
コンパイルできないから関数に切り出さないバカが増えると思われる。
その前に関数切り出せと。
たぶん Rust が一般に広まるとボローイングルールをまともに理解できなくて
コンパイルできないから関数に切り出さないバカが増えると思われる。
312デフォルトの名無しさん
2017/11/28(火) 15:17:40.57 イミュータブルにすることでコンパイラによる最適化の余地が増えるんでないの?
ミュータブル派とイミュータブル派の宗教戦争勃発なの?
ミュータブル派とイミュータブル派の宗教戦争勃発なの?
313デフォルトの名無しさん
2017/11/28(火) 15:25:32.16ID:Q+QzpY2X コンパイラが善きに計らうって、
つまりconstついてた(mut非指定の)変数がレジスタ割り当ての結果変更され得る最適化が起こるってことか?
さすかにそんな最適化は聞いたこと無いがソースあるのか?
即値展開ならわからんでもないが、それと並列は関係ないし
つまりconstついてた(mut非指定の)変数がレジスタ割り当ての結果変更され得る最適化が起こるってことか?
さすかにそんな最適化は聞いたこと無いがソースあるのか?
即値展開ならわからんでもないが、それと並列は関係ないし
314デフォルトの名無しさん
2017/11/28(火) 16:00:32.21ID:lii/QdBe アマゾンでオライリーのProgramming Rust出てるのな
アーリー版じゃ無い完全版かな?
どうでも良いけど蟹座の俺が心惹かれる表紙
アーリー版じゃ無い完全版かな?
どうでも良いけど蟹座の俺が心惹かれる表紙
315デフォルトの名無しさん
2017/11/28(火) 16:21:14.75ID:318e3gj2 >>308
「使ったことない」って人を判断したがるのは使ったことを自慢したいから?
ある数学上の問題を高速に解くために 2000年ぐらいにMPI を数ヶ月触ったことある程度で
以降は関わってないけど、それはなんか関係あるのか?
設計が破綻しているかどうかは問題によるだろ
どんなに考えても共有リソースにアクセスしなきゃいけない並列プログラムなんて山ほどある
共有リソースへのアクセス削減なんてみんな取り組んでる
そのための一ツールとしてイミュータビリティは重要な概念だろJK
> 並列計算で必要なのはイミュータビリティじゃなくて、変数スコープ分離と外部依存性の無いアルゴリズムだ
「重要視」と言ってるのに「必要」と解釈するのか……
変数スコープ分離という用語は知らん
「使ったことない」って人を判断したがるのは使ったことを自慢したいから?
ある数学上の問題を高速に解くために 2000年ぐらいにMPI を数ヶ月触ったことある程度で
以降は関わってないけど、それはなんか関係あるのか?
設計が破綻しているかどうかは問題によるだろ
どんなに考えても共有リソースにアクセスしなきゃいけない並列プログラムなんて山ほどある
共有リソースへのアクセス削減なんてみんな取り組んでる
そのための一ツールとしてイミュータビリティは重要な概念だろJK
> 並列計算で必要なのはイミュータビリティじゃなくて、変数スコープ分離と外部依存性の無いアルゴリズムだ
「重要視」と言ってるのに「必要」と解釈するのか……
変数スコープ分離という用語は知らん
316デフォルトの名無しさん
2017/11/28(火) 18:02:39.24ID:wSmX/jVF317デフォルトの名無しさん
2017/11/28(火) 18:17:27.07ID:oL6iYiK7 ガーガー言うほど文句が出るもんでも、全力擁護すべきもんでもないと思うがね>デフォルトでimmutable
Haskellほどやり方が変わるわけでもない、C/C++のconstより明快、letとvarで分けるほど使い心地が違うものにはならない、
https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/box-syntax-and-patterns.html
↑にあるようなBoxを使って大きい構造体を関数に渡すのはRustじゃ悪手ってとこだけ知ってればいい
Haskellほどやり方が変わるわけでもない、C/C++のconstより明快、letとvarで分けるほど使い心地が違うものにはならない、
https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/box-syntax-and-patterns.html
↑にあるようなBoxを使って大きい構造体を関数に渡すのはRustじゃ悪手ってとこだけ知ってればいい
318デフォルトの名無しさん
2017/11/28(火) 18:18:12.38ID:Q+QzpY2X >>315
MPIは不変性は並列化に必ずしも必要じゃないって話の例に出しただけだから、
さわった上で不変性が必要って主張するならまあそうなんだろう
データを不変にして触るノードの分だけコピーすりゃそりゃデータ競合は起きないだろうが、
その分ノードへの転送量だってかかるし、メモリも食う
だから富豪的で、額面上の並列度は上がっても性能には寄与しないと言ってる
俺が知らないだけでもっと良い最適化が不変変数にかかるなら完全に俺が無知晒したでめでたしなんだが
MPIは不変性は並列化に必ずしも必要じゃないって話の例に出しただけだから、
さわった上で不変性が必要って主張するならまあそうなんだろう
データを不変にして触るノードの分だけコピーすりゃそりゃデータ競合は起きないだろうが、
その分ノードへの転送量だってかかるし、メモリも食う
だから富豪的で、額面上の並列度は上がっても性能には寄与しないと言ってる
俺が知らないだけでもっと良い最適化が不変変数にかかるなら完全に俺が無知晒したでめでたしなんだが
319デフォルトの名無しさん
2017/11/28(火) 20:36:19.23ID:nHLuJ5vk 業務のDBとかででっかいBeanやテーブルさわってるとImmutableこだわると死ぬ気がする
ライブラリレベルだとImmutableすごいよさそうなんだが
ライブラリレベルだとImmutableすごいよさそうなんだが
320デフォルトの名無しさん
2017/11/28(火) 20:40:51.18ID:7DSslbhb immutableがいいのはソースの可読性が高まるのと、マルチスレッド化したときにリソースアクセスに問題ないのが保証できることでしょう。バグらなない自信があるなら効率を求めてmutableにするがよろし。
321デフォルトの名無しさん
2017/11/28(火) 21:07:28.65ID:LCKhcLzq mut にするのもそこまで困難な言語設定ってわけでもないし、
デフォルトが immutable でもいいんじゃねとは思う。
まあ大規模に作ったことはないからその際の困難はわからんけど、そこまで問題にならんのでは?
デフォルトが immutable でもいいんじゃねとは思う。
まあ大規模に作ったことはないからその際の困難はわからんけど、そこまで問題にならんのでは?
322デフォルトの名無しさん
2017/11/28(火) 21:37:26.40ID:RsLfLMGU let mutって書くのめんどくせーしvar
323デフォルトの名無しさん
2017/11/28(火) 21:37:34.07ID:RsLfLMGU 追加してほしい
324デフォルトの名無しさん
2017/11/28(火) 22:58:48.40ID:91xy27Pm mutにするのをめんどくさくするというのが
let mut構文を採用した理由なので
varはよっぽど何かない限り入らないと思う
let mut構文を採用した理由なので
varはよっぽど何かない限り入らないと思う
325デフォルトの名無しさん
2017/11/29(水) 00:16:55.36ID:ZRmpNQ2i Haskellのイミュータブルは永続データ構造?参照の使いまわし?
Rustのイミュータブルは?コピーしないと使いまわせない?
Rustのイミュータブルは?コピーしないと使いまわせない?
326デフォルトの名無しさん
2017/11/29(水) 00:58:38.85ID:RLTBNHC0 wasmに出力するのって、依存ライブラリも全部pure Rustじゃないとダメなの?
327デフォルトの名無しさん
2017/11/29(水) 03:28:58.51ID:wq9Dycsx 1.22でOptionにも?使えるようになって、haskellのMaybeモナドっぽく使えて捗るわ
ブロック内だけでも使えたら良いんだけど仕組み的に無理そうか
ブロック内だけでも使えたら良いんだけど仕組み的に無理そうか
328デフォルトの名無しさん
2017/11/29(水) 12:04:01.36ID:TbD0G3jq try catchみたいな構文検討されていたような
329デフォルトの名無しさん
2017/11/29(水) 19:35:23.16ID:PZaIONIl Rustを叩いている奴ってミラーレスカメラを叩いている一眼レフカメラ信奉者と同類に見える
大抵の場合は合理的な方が最終的に選択されるけどな
大抵の場合は合理的な方が最終的に選択されるけどな
330デフォルトの名無しさん
2017/11/29(水) 20:42:06.07ID:FCGUeU3g mutable変数扱うなバーカ、というメッセージだと思ってる
必要なら再宣言させるようにして人為バグを減らそうという魂胆は分かるぞ(Javaのfinal教徒感
必要なら再宣言させるようにして人為バグを減らそうという魂胆は分かるぞ(Javaのfinal教徒感
331デフォルトの名無しさん
2017/11/29(水) 20:50:40.91ID:wq9Dycsx BufReaderとかReadするStringとかにもmut必要何だからmut禁止とか無理じゃね?
不要なmutだったらワーニング出るでし、必要だったらコンパイルエラーになるでしょ
必要な形で使えば良いだけなのに一体何を議論してるんだ?
ミュータブルが気に入らないならhaskellおすすめ
不要なmutだったらワーニング出るでし、必要だったらコンパイルエラーになるでしょ
必要な形で使えば良いだけなのに一体何を議論してるんだ?
ミュータブルが気に入らないならhaskellおすすめ
332デフォルトの名無しさん
2017/11/29(水) 22:01:09.26ID:pXSSowmn Readした結果はmutableでいいのにlet mutと書かなければならんの面倒
人によってはletで再宣言するのかな
人によってはletで再宣言するのかな
333デフォルトの名無しさん
2017/11/30(木) 01:36:34.69ID:zpCxrqzF 例えばさ
mutな変数1つ宣言してそこに足し上げていくのと、
非mutな計算結果同士を足して新しい非mutな計算結果を作るのと
素朴に考えれば前者の方が省リソースだよな
別にその程度コンパイラの最適化やレジスタ割り当てでどうとでもなるだろうとも思うが
mutな変数1つ宣言してそこに足し上げていくのと、
非mutな計算結果同士を足して新しい非mutな計算結果を作るのと
素朴に考えれば前者の方が省リソースだよな
別にその程度コンパイラの最適化やレジスタ割り当てでどうとでもなるだろうとも思うが
334デフォルトの名無しさん
2017/11/30(木) 02:16:29.28ID:ypA28Khv https://qiita.com/koji_mats/items/62e85a87cc580e225796
これ見たんだけど、なんでwinがlet mut winじゃないんだろうって不思議に思った。
let win = gtk::ApplicationWindow::new(&app);
win.set_title("Vanilla Text");
で、コードを調べてみたら、こんな感じにFFIを呼んでるだけだから、
概念的にはオブジェクトを変更してるけどRust的にはmutが要らないという仕組みらしい。
ちょっと違和感無い?
fn set_title(&self, title: &str) {
unsafe {
ffi::gtk_window_set_title(self.to_glib_none().0, title.to_glib_none().0);
}
}
これ見たんだけど、なんでwinがlet mut winじゃないんだろうって不思議に思った。
let win = gtk::ApplicationWindow::new(&app);
win.set_title("Vanilla Text");
で、コードを調べてみたら、こんな感じにFFIを呼んでるだけだから、
概念的にはオブジェクトを変更してるけどRust的にはmutが要らないという仕組みらしい。
ちょっと違和感無い?
fn set_title(&self, title: &str) {
unsafe {
ffi::gtk_window_set_title(self.to_glib_none().0, title.to_glib_none().0);
}
}
335デフォルトの名無しさん
2017/11/30(木) 02:51:13.41ID:AHSKxIeg ポインタの先がどう変更されようが、ポインタを持ってるだけの側は不変。
336デフォルトの名無しさん
2017/11/30(木) 03:27:18.42ID:NyMSxVXi gtkはgoのほうが簡単
337デフォルトの名無しさん
2017/11/30(木) 07:37:17.88ID:YOUdxrbO Cellもしらんのか
338デフォルトの名無しさん
2017/11/30(木) 13:33:26.57ID:2d5TEUTF Rust的な設計の指針というかコツみたいのって無いですかね…
勉強のつもりで外部のCのライブラリとの間に入るちっちゃなFFIのラッパーを書いてみたんですが、Cの感覚で書く->コンパイラに怒られてあーなるほど修正ってのを繰り返してとりあえずは動くようになったんだけど
何をするにも
let foo = xxx ;
{
let bar = foo.xxx() ;
bar.yyy() ;
}
{
let baz = foo.zzz() ;
baz.www() ;
}
{
let bar = foo.xxx() ;
bar.yyy() ;
}
みたいに書かないといけなくて書いた本人でも「何やねんこのウンコ!」ってなってる(´・ω・`)
(Rustがって意味じゃなくて自分の書いたものがって意味で)
勉強のつもりで外部のCのライブラリとの間に入るちっちゃなFFIのラッパーを書いてみたんですが、Cの感覚で書く->コンパイラに怒られてあーなるほど修正ってのを繰り返してとりあえずは動くようになったんだけど
何をするにも
let foo = xxx ;
{
let bar = foo.xxx() ;
bar.yyy() ;
}
{
let baz = foo.zzz() ;
baz.www() ;
}
{
let bar = foo.xxx() ;
bar.yyy() ;
}
みたいに書かないといけなくて書いた本人でも「何やねんこのウンコ!」ってなってる(´・ω・`)
(Rustがって意味じゃなくて自分の書いたものがって意味で)
339デフォルトの名無しさん
2017/11/30(木) 15:21:22.37ID:AHSKxIeg どんなエラー出してそんな醜いコード書いてるのかを説明してくれないと。
340デフォルトの名無しさん
2017/11/30(木) 19:20:57.05ID:dqSyxXgg >>338
RustがRustで書かれてるのだからRustのリポジトリのコードを読んで参考にすれば勉強になるのでは?
https://github.com/rust-lang/rust/search?l=rust
RustがRustで書かれてるのだからRustのリポジトリのコードを読んで参考にすれば勉強になるのでは?
https://github.com/rust-lang/rust/search?l=rust
341デフォルトの名無しさん
2017/11/30(木) 19:27:22.21ID:uu2PxLG/342デフォルトの名無しさん
2017/12/01(金) 00:02:21.38ID:9zBEgLMI Rustに限らず他言語で書かれたライブラリを利用するときは呼び出し元言語の作法に適合するように改修しないと使いにくいことが多いような
343デフォルトの名無しさん
2017/12/01(金) 00:53:10.98ID:+mBQRpP6344デフォルトの名無しさん
2017/12/01(金) 18:20:32.47ID:MEq6f57k >>338 見た感じFoo::xxx : &mut Self -> BarとかFoo::zzz: &mut Self -> bazとなっているのでbarやbazが生きてるとfooにアクセスできないのが直近の原因だと思うけど、
xxxやzzzが本当にFooの変更を伴わないといけないのかを考えないといけない
CellやRefCellを使ってinterior mutabilityを導入したらFoo::xxx: &Self -> Barというメソッドにできる可能性がある
まあ実際のソースがどんなもんなのか知らないから適当だけど
xxxやzzzが本当にFooの変更を伴わないといけないのかを考えないといけない
CellやRefCellを使ってinterior mutabilityを導入したらFoo::xxx: &Self -> Barというメソッドにできる可能性がある
まあ実際のソースがどんなもんなのか知らないから適当だけど
345デフォルトの名無しさん
2017/12/02(土) 18:50:17.68ID:LUcOy7p3346デフォルトの名無しさん
2017/12/02(土) 19:17:25.64ID:XMmE+FVV トーキョー、サムライ、ハラキリ、ゲイシャ!
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 ★2 [Hitzeschleier★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
- 【サッカー】日本代表、FIFAランキング“4位”の強豪イングランドとの対戦が正式決定! 来年3月に聖地ウェンブリーで激突へ [久太郎★]
- 【悲報】ジャップ、日中戦争に賛成が5割弱...軍歌の音が聞こえる... [856698234]
- (´・ω・`)クリスマスが今年もやってくる~
- 千晴さん千晴さん
- 【乞食速報】プロクオリティ ビーフカレー 96食 4262円 [268244553]
- 【悲報】小泉防衛大臣、中国のレーダー照射事件をNATO事務総長に報告 [834922174]
- ( つ・᷄ὢ・᷅ )つだっこ
