1 名前:デフォルトの名無しさん [2017/05/21(日) 14:04:29.55 ID:9L9dm7b/.net] Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。 www.rust-lang.org/ https://github.com/rust-lang/rust Servo https://servo.org/ https://github.com/servo/servo ◆前スレ プログラミング言語 Rust 2 echo.2ch.net/test/read.cgi/tech/1478023960
2 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 14:09:00.98 ID:hU2RwKDa.net] おつ
3 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:12:44.23 ID:2E7Z41P0.net] s:
4 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:16:07.66 ID:cLRuMlqp.net] self.thank(1);
5 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 23:18:14.90 ID:rlx7fyr1.net] いつの間にか、公式サイトが日本語で表示されるようになっとる!
6 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 15:31:11.02 ID:NL1m8GyN.net] 日本語だと特に「システムプログラミング言語」って何かバズワード臭く聞こえるなあ
7 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 17:17:58.00 ID:XcuL8oqn.net] そらRust自体が元々が言語としてまともに機能してない欠陥品なんだからバズワード頼りになるのは当然よ
8 名前:デフォルトの名無しさん [2017/05/23(火) 18:18:14.39 ID:fz0kg0Hd.net] >>7 プログラミング言語いくつか知ってれば他の言語なんて多少解説読むだけですぐ理解できるぜ、みたいなのをぶち壊してくる言語よね 慣れれば生産性が高いのは分かるけど、チーム開発にはとても適用できない……
9 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 19:11:09.91 ID:1Q8iu32F.net] C++ std::unique_ptrを使い倒してればすぐ理解できるぜ?(白目 事細かなエコシステムや凶悪なボローチェッカは慣れたら愛すべき馬鹿として愛せるけど、他人に勧めるものじゃないよな まぁRustじゃないといけないケースってのは少ないから、好事家の中で流行ってれば良いと思って使ってる
10 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 20:03:50.20 ID:n1SS9OPs.net] 俺はコーディング規約でガチガチにしないと使えないC++よりチーム開発に向いてると思うけど。
11 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 20:09:42.82 ID:tcrYM/HP.net] コンパイルが通らない時に、相談できる人がチームに居ればね
12 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 20:44:41.89 ID:XgxPLO7Q.net] alexcrichton、いつもissueのopen/closeの操作をミスりまくってて笑う
13 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 21:52:49.96 ID:sJY6yDAU.net] Rustをある程度緩く使えるライブラリ… Rust使う意味あるか?
14 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 00:09:41.07 ID:8Z1z+g0P.net] Rustのborrow checkerに勝てるレベルのやつはそもそもRustなんて使わずにC++使ってりゃいいしな。
15 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 00:22:10.07 ID:6yksy5B1.net] いや、気を使うの面倒だからborrow checkerに任せたいわw どうせC++でもValgrindなりそれに類するツールでチェックするわけだし、言語仕様で縛ってくれるのは楽だ
16 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 00:37:53.57 ID:D5tT9Iz6.net] C++でチーム開発したことないやつもいそうだしな。 C++から来たやつと、関数型とかから来たやつで感想も違うみたいだし
17 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 00:50:41.45 ID:pRDkrxzx.net] If it compiles, it worksが概ね成立するのは魅力だよな
18 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 06:11:06.95 ID:+DimD/vP.net] tokioが代表だけど、tokeiとかhayakuとか、謎日本語名crateが幾つか有るのは 中二病開発者が多いから?
19 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 09:10:30.78 ID:Sn2/MSJK.net] 外人の日本語タトゥー的な… hayakuは「端役」にも読めるが
20 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 10:35:29.34 ID:MMUszNj4.net] >>18 Rust使ってるクズなんて中二病患者とモジカス工作員だけなんだから妥当だろ。
21 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 13:06:58.00 ID:1nGlF3E4.net] メンヘラは特定の言葉に執着があるからNGしやすい。
22 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 20:37:17.74 ID:pRDkrxzx.net] kuchikiなんてのもあるな あとコミッターに@BurntSushiとか@mitsuhikoみたいなのがいる @briansmithはアイコンが「ス」だし
23 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 20:56:34.76 ID:+DimD/vP.net] ところで、Boxをboxキーワードにする件はどうなったん?
24 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 21:30:26.80 ID:FIIUGQKl.net] そんなどうでもいいことよりクロージャがまともに使えない問題とトレイト境界の問題(これら結構重なる部分あるけど)はいつ解決するの?
25 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 08:01:17.73 ID:1zFjO363.net] 昨日のRust入門者の集いは、50人ぐらい集まったのか 少し前のScalaぐらいの盛り上がりある?
26 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 10:35:47.30 ID:f/19a4oq.net] やっぱ本当に入門したいやつは勝手にずかずか入ってくるよなー
27 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 10:36:07.10 ID:f/19a4oq.net] わざわざ集まって入ることない
28 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 11:11:47.24 ID:lITgTAs
] [ここ壊れてます]
29 名前:g.net mailto: こんなにRustは欠陥品っていうのは広まってるのにまだ始めようとするかわいそうな騙された人がいるのか。 それとも流行らないことに業を煮やしたモジラさんが雇ったサクラか? [] [ここ壊れてます]
30 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 11:40:08.52 ID:PvbJKgcc.net] こいつ同じことずっと言ってんな。糖質はしつこい。
31 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 11:41:35.93 ID:lITgTAsg.net] >>29 Rustなんてありがたがる信者に糖質言われるならむしろ本望だな。
32 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 11:50:37.94 ID:lITgTAsg.net] 少なくとも俺が、Rustはまともに物がつくれないコンセプト崩壊の欠陥言語、っていってることについて、このスレの住民はなんら答を出していない。 ベンチマークの結果が良いとか悪いとか以前にまともにコードが書けない言語のどこがC++の後継言語だ? C++で書いたバグのないコード(Valgrindチェック済み)をRustに移植してもコンパイルが通らないって時点でお察しなんだよ。
33 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 11:53:07.95 ID:fYEpqUiH.net] そしてこの顔真っ赤である
34 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 12:02:24.21 ID:xRlJL6be.net] だって、このスレにいる奴はRustコードが書けるから答えも何もないし・・・ なんでこんなに長いこと必死にRust否定を続けてるのか分からんかったけど 自分がRustコードが書けなくて、第二のコードが書けなくて傷つく奴が出ないように、という正義感からだったのか プログラミング言語の学習コストなんてあってないようなものだ、みたいなプライドを打ち砕かれた可哀想な子なんだな
35 名前:あ mailto:sage [2017/05/26(金) 12:08:45.87 ID:uOeVRBLK.net] >>31 cppで書いたコードはcppで使えばいいのでは? 俺が書いたcのコードは、'a'bつけたのと、ポインタインクリメントやめたくらいで割と素直に移植できたけど。 バグが無いってのは、今まで俺事故ったことねえって言う奴くらい、どう正しいか証明するの大変な事だよ。 そういえば、valgrind、スタック変数の境界チェックできるようになったの?
36 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 12:30:25.06 ID:8eg+gckK.net] >>34 experimentalだがSGCheckが使えるな。
37 名前:あ mailto:sage [2017/05/26(金) 13:22:40.22 ID:uOeVRBLK.net] >>35 おお、そうなのか。 ちゃんと動けばそこそこ良さそうと思ってたし、見てみようかな。 クソ遅いのももう少しマシになってくれてれば良いんだが…。あれも知らんだけなのかな。
38 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 19:23:44.69 ID:JcK0B0rB.net] キチガイにもやさしいここの住民好き
39 名前:デフォルトの名無しさん [2017/05/27(土) 02:31:59.03 ID:SSsXXMTN.net] 公式HPでシステムプログラミング言語、って書いてあるのが読めないで、なんちゃってアプリ作ろうとしたんじゃないかな?
40 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 02:59:10.15 ID:CDShuPAP.net] 結構、Webアプリを作ろうとしてる人が多い感
41 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 03:03:11.16 ID:lxNSMSh+.net] サーバーサイドRustとか素敵やん
42 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 06:03:06.96 ID:2NZ16S+U.net] web系だとライブラリのマッシュアップって感じが普通だからライブラリ不足が不満になるのかな。
43 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 06:48:55.16 ID:3w92Yrys.net] それ以前に、コンパイルの通るコードが書けなくて挫折してるんでしょ サーバフロントエンドのマッシュアップだとHTTP I/Fで特に支障は出ないと思うぞ バックエンドだとライブラリ側がC I/Fが提供してるならさほど面倒はなかった
44 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 06:55
] [ここ壊れてます]
45 名前::11.90 ID:41DJlv/7.net mailto: Rustって最近知ったんだけどどういう目的で使うのがよろしいの? [] [ここ壊れてます]
46 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 09:42:53.30 ID:CDShuPAP.net] JavaScriptしか知りませんって人が入門してるらしいけど、全員投げ出すと思うわ。 C/C++経験者しか残らんだろう。
47 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 10:07:55.57 ID:2NZ16S+U.net] 第二言語がRustだったら絶望するよな 第5言語くらいじゃないと
48 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 10:09:10.22 ID:2NZ16S+U.net] >>43 C++に不満なときこれで置き換える。 ネットワーク系だったらGoのがいいかも。
49 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 10:11:29.38 ID:mjlYjLQ6.net] guiアプリ作る時はrust的にはやっぱxul使うの?
50 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 10:15:34.31 ID:CDShuPAP.net] PHPerをScalaに大ジャンプさせようとして大やけどしたチャットワークの悲劇に学ぶべき。
51 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 10:45:11.15 ID:41DJlv/7.net] >>46 なるほどー RubyとかPythonのC拡張の部分をRustで置き換えたりあるいは機械学習や分散処理らへんでRustが有用にはならないだろうか
52 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 11:04:04.64 ID:1jZ1Mh3o.net] GUIと言えば、GTKの中の人がRustに乗り気で、既に一部置換が始まってるというのが面白い
53 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 12:44:23.89 ID:SP+5JLSB.net] Valgrindといっても、あれが扱えるのはメモリ関連だけで一般のuse-after-freeは対処できるわけではないよなあ 例えば`hyper::server::response::Response`のようないわゆるsession type(https://deterministic.space/elegant-apis-in-rust.html#session-types)も、 ownershipのおかげで安全性を静的に保証できている
54 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 13:58:45.99 ID:V3R8pPgP.net] お前らってRust以外に何の言語を使ってるの?
55 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 14:32:09.69 ID:Nnf9Y/EU.net] >>52 C++, python むかしLisp かじったのはruby, java , javascript, objective-c
56 名前:デフォルトの名無しさん [2017/05/27(土) 15:51:40.38 ID:gV6nh4ij.net] >>43 OSとかミドルウェアとかそういうの向け。あと組み込み。 ネイティブの速度が必要だけど、CとかC++やって苦労した人向け。
57 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 17:16:38.79 ID:3w92Yrys.net] C/C++で苦労した人は更に苦労すると思う(名推理 前スレで上がってたベンチマーク、C/C++勢がキレて追い抜いてるかと思ったけど更新されずなのな benchmarksgame.alioth.debian.org/u64q/performance.php?test=knucleotide 流行ってるベンチマークでもないから別にそれ自体はおかしくないんだけど 他のRustで最適化されてないヤツはどうなのよと実装し直してみたら普通にトップスコアが出るな この程度の簡易な処理だと性能良い言語だなぁと見直した、実用時に活かせるかは別問題だけど
58 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 17:37:25.20 ID:2NZ16S+U.net] >>55 同程度のエキスパートのチームだとして、やっぱC++より苦労するかなぁ?
59 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 21:36:50.13 ID:0kaExwmN.net] ベンチマークの順位はそこまで気にならないが、そこのコードでrayonとfutures使っているのを見て触らないとと思った
60 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 01:37:36.40 ID:CAN6hjyr.net] >>52 Java,C/C++,C# 政治的、宗教的な意味
61 名前:いはなく只で使えるものを探していた結果 [] [ここ壊れてます]
62 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 02:34:25.88 ID:/SKdZHom.net] >>52 C、Ruby それと使い込んではいないけどJava、JavaScript、Common Lisp
63 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 19:51:05.68 ID:vySQPNuk.net] 焼寿司さんが日本語ツイートにリプ付けてるの見かけたけど、日本語分かるんかな? Google翻訳かな
64 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 22:41:06.63 ID:9sPyoVkk.net] >>55 一番上のjavaがまだ最適化の余地があるのが気になる けどガシガシ書きたくないからあんなもんだろうな。
65 名前:デフォルトの名無しさん [2017/05/29(月) 08:05:31.35 ID:aIZDJONO.net] スカイプはどんな言語で作られてるの?
66 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 13:10:22.27 ID:yBvsn9Ro.net] >>53 >>58>>59 やっぱりみんな何かしらC系言語の素養はあるのか
67 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 13:24:18.34 ID:R8bGfh1Z.net] LSI C試食版には足を向けて寝れないね
68 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 17:17:49.50 ID:XCGSI9yY.net] うお懐かしいなw
69 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 22:06:22.42 ID:kppw5p5H.net] やはり、better Cなのか
70 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 22:27:54.48 ID:hRcE5cRH.net] better cはgoでしょ cは関係ない
71 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 23:46:05.71 ID:2+2L65e+.net] ほんとぉ?
72 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 23:49:43.56 ID:4qLs+IkO.net] Goがbetter C……?
73 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 23:59:14.77 ID:L9ed4gjc.net] obj-cやc++の立場は、、、 goがbetter cってのは、rustがbetter cってのと同じくらい不可思議だなw
74 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 03:08:14.82 ID:IqZ8KgLG.net] やはり、better Cなのか
75 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 07:29:11.22 ID:f0HoldrK.net] ごめんGo知らずに適当に言ったわ。 Goはなんなの
76 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 07:58:02.99 ID:hxsHc/tN.net] いやGoスレいけよ
77 名前:デフォルトの名無しさん [2017/05/30(火) 10:45:37.44 ID:gxWnkgCC.net] god bless c
78 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 12:54:00.95 ID:IWC/1tpu.net] もうcでいいじゃん メモリーリークさせる馬鹿に合わせる必要なんかなかったんだよ
79 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 13:03:48.77 ID:cUShYlMs.net] >>75 Rustはバカには使えない バカはCを使わせてもまともには書けない Cをまともに書けるならRustなんて不自由な言語はなくても問題ない よってRustは不要
80 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 14:53:42.47 ID:jV/RuSAE.net] 長年C/C++やってた連中は始めから眼中になかっただろ。 Swiftしかり、新しいものに飛びつくのはいつも歴史を学ばない若い連中。
81 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 15:46:56.49 ID:zOXcPiC1.net] C/C++より(なぜか)性能良いから、borrow checkerに勝てるなら良い言語だがなぁ 問題は、若者も老害もborrow checkerに勝てないから使えない 学習曲線の改善を今年の目標に掲げてたはずだけど、どうにもなる気がしねぇwww
82 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 16:21:27.71 ID:3rG32g2E.net] 2chなんて年寄りしか見てないからここの意見なんて全くあてにならんよなー ここ見てない若い人のほうがメインなユーザーだろうし
83 名前:デフォルトの名無しさん [2017/05/30(火) 16:41:31.26 ID:xHXzQ5Z2.net] >>79 ワイ16歳
84 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 17:25:14.81 ID:KVzaPBtZ.net] 俺15だし
85 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 17:52:40.62 ID:cUShYlMs.net] >>78 C++はどっこい、Cにはまだ及ばない。
86 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 18:35:38.41 ID:PZbBKLpD.net] ちゆ 12歳(おっさん感 Cに比べりゃC++, Rustはランタイムの分のオーバーヘッドが絶対的に存在するから そこを引き合いに出すならどうやっても勝てんしな 実用性のあるコードを書いた時の性能はどうだかねぇ
87 名前:デフォルトの名無しさん [2017/05/30(火) 18:40:13.37 ID:xHXzQ5Z2.net] >>83 性能はそこまで気にしなくても良い気もする 最近のPC高性能だし ネイティブでメモリ管理出来るってだけでそこらへんの言語よりは速いし
88 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 19:06:48.72 ID:2KYBWSXG.net] 学習曲線の改善って何をするんだ?
89 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 19:07:46.03 ID:reqRzc0L.net] まあプロダクションでのパフォーマンスはServoとQuantumが示してくれるでしょ >>85 Non-lexical lifetime以外よく分からない
90 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 20:40:00.58 ID:XaqH7Fx5.net] Cで書くには煩雑なものを相手にしたときに、 実際Rustがどんだけの結果を出せるか、 というのがみんなの興味だろう。 ちっさいサンプルプログラムみたいなんをコンパイルして、 それでベンチマークテストして結果比較したって、 そんなもんは誰も嬉しくはないし驚きも無い。 オーバーヘッドの一点のみで語りつくせるんなら、 バイナリエディタと機械語でOSだって作れる。 それはオーバーヘッドの無い、最速最軽量だろうね。
91 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 21:45:35.31 ID:NwY5b/Ke.net] librsvgの移植が、中規模コードの実践例として参考になりそう https://people.gnome.org/~federico/news-2016-10.html#25
92 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 21:54:14.25 ID:re3tYRpg.net] free挿入するよりcopying gcの方が速いし 無駄なオーバーヘッドなくそうとしたらlibstdの実装みたいに raw pointerだらけになるからそんなこと気にしなくていいよ。 jitのおかげでロジックそのまま書いても速いなんてことが 起こらないから将来、最適化は必要になるだろうけど過剰な最適化は必要ない。 抽象度の高いまま低レベルな領域でも書けるからいいんだよ。 javaだと整数型の型を揃えようとするからバイト列の操作とか苦手だけどrustはそういうのないのよ。
93 名前:デフォルトの名無しさん [2017/05/30(火) 23:04:32.49 ID:xHXzQ5Z2.net] >>87 ベンチマークって基本そういう系多いからね ファイルアクセスとか考えたら速度ほとんど変わらないのに
94 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 01:36:02.83 ID:/NtvNHJE.net] ベンチマークはオーバーヘッドが無視できるよう(特定)処理を大量回数ループさせてる という意味が分かってないから、そういうこと言っちゃうんだろうねぇ もっと勉強しろ、若造どもが
95 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 01:44:33.93 ID:8BExUPKw.net] オーダが同じでもオブジェクト生成や関数呼び出し等々のオーバーヘッドは係数部分に効いてるんやで
96 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 02:15:05.25 ID:/NtvNHJE.net] Rustはzero-cost abstractionだのコンパイラによる関数最適化でC言語とさして変わりないんやで^^ VMだと係数にもろに影響するやがな
97 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 09:42:28.64 ID:OQ401SVi.net] >>91 だから若造はいないんだって。 Cとか言い出す老人しかいないの。
98 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 09:46:53.00 ID:Kcuasmjx.net] >>94 >>78 若者も老人もいるんだよなぁ
99 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 12:19:43.42 ID:WjnJkecI.net] 本当のおっさんや老害はRustスレなんてこないだろ。 ワイは偉そうに古参風を吹かせてた>>77 だがまだビンビンの学生やで。
100 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 12:22:43.65 ID:FbhpYS54.net] ワイ周辺だと学生はそれなりに見る よくはてなブログに書いてる人も学生でしょ
101 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 12:27:53.72 ID:xgELgHJk.net] そりゃ、おっさんの大多数は新しい言語が嫌いだからね
102 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 12:38:49.91 ID:WjnJkecI.net] それな
103 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 12:55:16.23 ID:IqYufuRr.net] 年取ると守りに入ってしまっていかんな
104 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 18:15:57.61 ID:xNKvRsij.net] まだ2chは若者に人気だったのか slackとかじゃないの
105 名前:デフォルトの名無しさん [2017/05/31(水) 23:54:17.31 ID:H5pMSxMU.net] >>83 ランタイムなんてリンクしなけりゃ済む話
106 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 23:59:15.13 ID:8BExUPKw.net] no_stdか……
107 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 10:52:08.55 ID:AXJF1Amn.net] それランタイムじゃなくライブラリ no_mangleでマングル名消してもランタイムはリンク解消できないだろうねぇ
108 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 12:56:34.33 ID:5JdW7IAM.net] #![no_std]すればliballocとlibpanic_unwindはlibstdは勝手に外れなかったっけ? libcoreはliballocにリンクしていないし#![needs_panic_runtime]もしてない
109 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 13:33:54.90 ID:TwQiYK+8.net] Rustランタイムって具体的には何してくれるの? ファイナライザ呼び出しとパニック時のスタックダンプ表示?
110 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 13:39:40.72 ID:AXJF1Amn.net] ttps://doc.rust-lang.org/book/no-stdlib.html 最小限のmain関数だけにしても、C言語+clangでビルドするバイナリ相当までは削れんなぁ Rustマングル名の解読とか、C言語へのブリッジなんかも入ってるんでない str型はno_stdでも使えるようだから、この辺の一部プリミティブ型のラッピングもしてるかな
111 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 14:25:43.96 ID:y1VaJ38E.net] ランタイム気になるのはOS書く時くらいでしょ
112 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 14:27:32.75 ID:y1VaJ38E.net] あとOS無しの環境でプログラム動かす時とかもそうだけど 要するにそういうときだけ
113 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 15:23:27.31 ID:TxD0ndLo.net] その辺の整備は優先度低いだろうからな。 トレイト境界の特殊化とか知恵の輪みたいな型システムのサポートとかもっとやることがある
114 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 15:36:56.97 ID:SoMrAbTt.net] IoTブームを考えると、組み込み系が一番Rustを活かせる場だと思う パフォーマンスが良いし、アップデート出来ない環境で脆弱性の心配が減るのも良い メモリフットポイントも、先行事例を見るにまあぼちぼちなんとかなってるようだ
115 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 16:49:21.04 ID:84f6kPv5.net] 新興言語が使い物にならないのはSwiftが証明しちゃってるしな。 学習コストが高いし、仕様変更も多すぎて管理コストがかさむ。 仕事では使い物にならない。 IoTはなんだかんだいってバックエンドCフロントエンドECMAScriptが主流になるんじゃないかな。
116 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 16:57:13.59 ID:Ic6OT1NI.net] IoTもう終息してきてない?
117 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 18:07:25.12 ID:b0AgrCqp.net] マングリングなんかはコンパイル時に解決してるのでは strはただのデータと長さのペアの構造体 ランタイムとはなんなのか
118 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 18:32:06.24 ID:AXJF1Amn.net] 解決してないから、場合によってはno_mangleが必要なわけでな プログラムロード時に展開して処理中はオーバーヘッドないだろうけども IoTブームを考えるとRustの選択肢はありだろうけど 流行りを無視したら性能良く容量少ないバイナリ吐くCかギリギリC++かなぁ ガチな組み込みは老人ばかりでC/C++で難なく安全なコード書くし 組み込み系の仕事やってると業務での採用提案は現実的には思えんわ
119 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 19:44:54.46 ID:KprYmBPJ.net] >>115 ガチ組み込みでもC++使うんだ。 自動車とかだとCのみだよね。 家電とか?
120 名前:デフォルトの名無しさん [2017/06/01(木) 23:17:34.13 ID:Co5NqntP.net] >>116 自動車は普通にc++使ってる部分もあるよ。
121 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 23:38:13.83 ID:0ZYBTIzB.net] ハードウェアは未だにZ80が現役のパチンコでもZ80要らないところなら色々使うで。 ソフト部分がjavaかC#か、最近はunityだから格差が大きい。 こういうニッチなところならrustのno_coreも入り込めるかも
122 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 23:39:53.34 ID:0ZYBTIzB.net] ごめん言い忘れた。 いまだにC++使わないのなんか軍事兵器くらいやで戦闘機のOSとか
123 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 23:46:55.28 ID:GrGj5OGG.net] そんなの持ち出す前にlinuxでしょ
124 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 00:20:19.49 ID:u7OL4GIc.net] F-35はC++が使われてるんじゃなかったか
125 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 00:22:55.55 ID:1X/05mt0.net] お前らやたら詳しいな……
126 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 00:25:26.45 ID:/gLRnObz.net] その辺はAdaが使われてる印象だったんだがCも使われてんのか。
127 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 00:54:37.65 ID:UJQ0OGfD.net] 今、MISRA Cを使ってるようなところが、Rust向きだと思う
128 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 01:43:12.50 ID:USk3zPix.net] 飛行機なんかはメモリ確保命令は使わずに上書きでやりくりするんでしょ? リアルタイム性が要求されるから決定的瞬間にアロケーションや解放なんて処理始まったら死ゾ
129 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 02:00:16.87 ID:/gLRnObz.net] >>125 そうならばメモリアクセス安全に寄ったRustは不向きの用途だな。 専用ランタイム作らん限り。
130 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 06:39:31.02 ID:eD3LHIkq.net] >>123 組み込み業界、Ada使うくらいなら素直にアセンブラ使うわw >>119 他言語へのAPI公開のため最近はまたC言語が流行ってるやぞ RustもGoもSwiftもC言語とのI/FはあるけどC++とのI/Fはないから、流行りに合わせてCにしとこってのはままある まぁRustはbindgenとかいう変態ツールでC++マングル名を回避する荒業に出てるからなくても困らんのだけども
131 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 07:33:26.58 ID:3O32wZtM.net] >>125 ATS2 みたいな機能を Rust も組み込めば良いのに。
132 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 09:15:56.51 ID:PNLF+z5i.net] C++でextern Cじゃいかんのけ?
133 名前:デフォルトの名無しさん [2017/06/02(金) 10:26:55.70 ID:f93mDoXl.net] cとのI/Fではc++が最強か
134 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 16:42:33.09 ID:IZaDrWj5.net] >>117 そーなんだ。俺がやってたのはもう10年くらい前だからさすがにかわったのか
135 名前:デフォルトの名無しさん [2017/06/02(金) 17:04:48.35 ID:Lx2HMXf/.net] impl Into<[u8]> for Hoge { これがエラーになってしまうのですが、どうやればInto<[u8]>を実装できるのでしょうか? impl<T: [u8]> Into<T> for Hoge { これも試してみたのですがシンタックスエラーになってしまいました。
136 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 18:53:59.81 ID:ymoR0uYq.net] >>132 ttps://play.rust-lang.org/?gist=33ccca08ebe70d32141ce8cdaeddd76e&version=stable&backtrace=0 配列の長さが固定なら参照にしなくてもいいけど、多分可変長なんだろうからlifetime使わざるを得ない気がする このスレでtokio, tokio言うからどんなものよと使ってみてるけどムツカシイ・・・ クライアントのサンプルコード少なすぎる、futuresの在り様が掴めなくて苦しいぜよ
137 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 20:26:56.32 ID:ymoR0uYq.net] tokio好きのエロい人、ボスケテ ttps://play.rust-lang.org/?gist=1efad716955551cd68c21b0183b
138 名前:9f942&version=stable&backtrace=0 これで実行すると、リクエスト送信 => レスポンス受信 => リクエスト送信、みたいな動きになる sendとsend_allで二回送信してるんだろうから分からいでもないんだけど リクエスト送信 => レスポンス受信、の動きにするにはどうすりゃいいの [] [ここ壊れてます]
139 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 19:09:45.21 ID:MHNPbMg7.net] logとかrandとか、標準ライブラリではないけと、ほぼ公式ライブラリ化してるcrateのリストって、どこかにある?
140 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 20:41:56.30 ID:x4F2VVph.net] brson / stdx
141 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 22:00:53.66 ID:MHNPbMg7.net] >>136 いい感じだね Authors欄がThe Rust Project Developersになってるcrateのリストが 公式サイトのどこかにあるかなと思ったけど無いなあ
142 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 22:03:30.78 ID:LvdfU0KG.net] >>137 https://github.com/rust-lang-nursery
143 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 22:21:40.86 ID:MHNPbMg7.net] >>138 これや!
144 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 03:40:08.07 ID:fD7zpG1M.net] そういうのがstdに無いのが不便で仕方ないんだがどうしてそうなったの
145 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 03:45:59.28 ID:79UOiFpQ.net] >>140 それもう100回くらい語られてる https://blog.rust-lang.org/2017/05/05/libz-blitz.html#batteries-included
146 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 03:50:33.29 ID:fD7zpG1M.net] >>141 FAQにも無いように見えたしググり方も分からなかったんや ありがとナス
147 名前:132 [2017/06/04(日) 10:44:11.97 ID:rLXx1OCs.net] >>133 そこにもlifetime指定できたのですね。ありがとうございます!
148 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 14:04:24.56 ID:W9jPbq7z.net] C++のとき=で右辺の状態が変わるのが人間の直観によろしくないと 非常に明白な結論が出てるのに なんで変えなかったんですかね 思考が著しく阻害される
149 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 16:24:39.76 ID:8nnj2TqC.net] 記号が <- だったらよかったのにって? まあ慣れだと思うけど。
150 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 16:28:32.85 ID:Ukp5iwZo.net] それを言い出したら左辺の状態が変わるのも"直感によろしくない"しなあ
151 名前:デフォルトの名無しさん [2017/06/04(日) 16:42:30.55 ID:qUWZGkRh.net] >>145 代入ってよく使うのに2文字はだるすぎ 慣れれば=でも問題ない
152 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 16:58:15.24 ID:2L30Nwvk.net] お前ら非常に明白な結論になんてことを・・・
153 名前:デフォルトの名無しさん [2017/06/04(日) 17:07:01.45 ID:zptvcWS6.net] >>51 valgrindの扱えない 一般のuse-after-free って何だ?
154 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 19:25:09.29 ID:rwHtuE7A.net] >>149 メモリ以外も含めたリソースの解放後の使用って意味じゃね?ファイルとか
155 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 21:24:44.90 ID:Ukp5iwZo.net] >>150 ファイルに関してはValgrindには--track-fds=yesがあるから例として微妙では もうちょっとドメイン固有なもの、例えばSerdeでDeserializerを2回使うのを防ぐとかの方がありがたみが強そう
156 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 21:40:25.92 ID:qOHu1i3Q.net] valgrindみたいな実行時チェックとコンパイル時の静的チェック比較してどうするの
157 名前:デフォルトの名無しさん mailto:sage [2017/06/06(火) 00:41:45.73 ID:eZ7grxii.net] https://docs.rs/try/1.0.0/try/ >Since the introduction of the ? operator, its supporters have preffered its use, ignoring the valid criticism of the ? operator almost hiding the error propagation operation. 彼は一体誰と戦っているのだろう……
158 名前:デフォルトの名無しさん mailto:sage [2017/06/06(火) 02:28:52.15 ID:LS7abRGk.net] というか、try!をdeprecateする話なんてあったか? Rust 1.13以前をサポートするcrate(特にnursery系)ではバリバリ現役じゃん
159 名前:デフォルトの名無しさん mailto:sage [2017/06/06(火) 13:02:17.27 ID:29cDHiwu.net] そういや、crates.ioに公開されてるものって 対応してるrustcのバージョンが不明確だな
160 名前:デフォルトの名無しさん mailto:sage [2017/06/06(火) 21:24:51.99 ID:LrtFpx4M.net] 案の定、誰もtokioを使ったことない感じでスルーされつつ自己解決した ttps://play.rust-lang.org/?gist=42a8464afde50942d9a162f3d1cfe9c0&version=stable&backtrace=0 futuresのAPI分かりづらいよ zero-costとかそう言う所じゃないレイヤーのI/F設計が頭おかしい気がする いや、気がするだけでzero-costに注視した場合にそうならざるを得なかったのかもしれんが とりあえず、奥深いと言うかなんと言うか、tokio及びfuturesの闇の深さが分かったのでちょっと遊ぼう tokioはstd:netのラッパーで本当に早いの?な感じだったけど、futuresの方は中々に面白い
161 名前:デフォルトの名無しさん mailto:sage [2017/06/06(火) 21:31:18.02 ID:eZ7grxii.net] mioは本質的にstd::netを使ってなくねなどと重箱の隅を突いてみる
162 名前:デフォルトの名無しさん mailto:sage [2017/06/06(火) 21:39:21.98 ID:LrtFpx4M.net] tokioもサーバサイドで使うぶんには効率的よ?と直前のレスをちゃぶ台返し エアプログラミングで卓上で論じる分には楽しいけど、実際使ってみようとしたらドキュメント少なすぎるだろ futuresのtutorialみたらtokio.ioに飛ばされてスッゲーあっさりとしか書かれてないでやんの
163 名前:デフォルトの名無しさん mailto:sage [2017/06/07(水) 10:48:52.84 ID:oMhdv7bq.net] な?Rustってまともに使える言語じゃないだろ? だからもう騙されるのは終わりにしようぜ。
164 名前:デフォルトの名無しさん mailto:sage [2017/06/07(水) 13:01:49.86 ID:AvS1SMln.net] ソース読めばいいよ
165 名前:デフォルトの名無しさん mailto:sage [2017/06/07(水) 19:59:59.87 ID:CD/BPHg5.net] 言語じゃなくライブラリの問題なんだよなぁ、言語仕様で躓いたPG(笑)はスクリプト言語にでもおかえり ソース追い回しても分かんなかったよ, crate futuresのソースがC++のマクロ地獄みたいなの 解決したらそりゃそうだと納得なんだが、sink.and_thenのErrとstream.into_future().and_thenのErrが一致しないのは罠だと思った お前ら両方ともtrait Futureのand_thenなのに違う型をツラっと返すなよな・・・ sinkから作ったFutureとstream(のinto_future)から作ったFutureがand_thenで連結できないのかと悩んだよ
166 名前:デフォルトの名無しさん mailto:sage [2017/06/07(水) 20:19:54.47 ID:xcCDpPBC.net] むしろ同じエラー型しか返せないとしたら面倒臭いわな 例えばfutures_cpupoolで常にio::Errorしか返せないとかだったら扱いにくいのなんのって
167 名前:デフォルトの名無しさん mailto:sage [2017/06/07(水) 20:43:02.03 ID:CD/BPHg5.net] Futureの操作元(今回はStream)をエラー時にも返したい時がある的な振る舞いは未だに理解できんぞ sinkはErrでstreamは(Err, Stream)とかイミフ、どうせなら両方ともタプルにしてくれよ
168 名前:デフォルトの名無しさん mailto:sage [2017/06/07(水) 20:44:49.12 ID:aNYsG6oK.net] それはそうだが、StreamFuture::Errorの型はあれはちょっとなあ…… 所有権を返したいってのはなんとなく分かるが
169 名前:デフォルトの名無しさん mailto:sage [2017/06/07(水) 20:46:10.36 ID:aNYsG6oK.net] >>164 は>>162 宛てな
170 名前:デフォルトの名無しさん mailto:sage [2017/06/08(木) 02:32:18.91 ID:+DWZ9aoq.net] reqwest、HTTPヘッダやMIMEタイプまでそれぞれ別個にタイプセーフとかクレイジーだな、いい意味で いや、hyperのせいか
171 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 01:32:14.88 ID:eJzwOC8V.net] Announcing Rust 1.18 - The Rust Programming Language Blog https://blog.rust-lang.org/2017/06/08/Rust-1.18.html pub(restricted)と構造体フィールドの自動並び替えがstabilized
172 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 07:32:46.19 ID:2Ut1GWuy.net] 時報が少し賢くなってるwww
173 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 12:48:15.05 ID:BBPKL/bd.net] >>167 ありがとう。 これからも頑張って。
174 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 13:10:04.93 ID:+ro9fQGu.net] pijulってなんだよgitだけでいいだろ
175 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 14:25:21.34 ID:2Ut1GWuy.net] gitよりmercurialが好きです(半ギレ pijul(とdarcs)は初めて存在を知ったけどほーって感じ Pull Requestはサービスプロバイダに依存するから、VCS自体にPR管理機能を持つのは良いのかもねぇ
176 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 14:42:06.85 ID:8C3OvAmi.net] pgr
177 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 15:36:57.58 ID:CZ4YsNdD.net] Rustはgithubに依存しすぎだろ GoogleやMicrosoftも似たようなサービス始めるみたいだし、もっと中立的になった方がいい
178 名前:デフォルトの名無しさん [2017/06/09(金) 15:39:14.20 ID:F1/ud66B.net] goもかなり依存してないか?
179 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 15:44:08.83 ID:+ro9fQGu.net] github依存度で言ったらGoよりましじゃないかな?自前でcrates.io持ってるし。 まあgithubに依存してなくてもやらかしたnpm見てるとgithub依存も最悪ではないみたいに思ってしまうがな。 というかgithub以外のまともなホスティングサービスがないのが悪い
180 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 15:49:49.79 ID:CZ4YsNdD.net] Scala/JavaのIvyみたいに、crates.io互換鯖を自由に立てられるようにしようとか crates.ioのログインにgithubアカウント以外も使えるようにしようとかの動きは無いのかな?
181 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 15:51:15.80 ID:+ro9fQGu.net] まあそれはともかく、gitとhgのサポートが既にあるのに pijulとかいうまだまともに使えないVCSをwritten in Rustってだけで突っ込むのは 内輪のノリがきつすぎてイタい子なんだなあって感想
182 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 15:52:47.94 ID:CZ4YsNdD.net] >>177 Haskellのdarcs優遇と同じ現象だな
183 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 16:00:58.60 ID:+ro9fQGu.net] >>178 ghcすらdarcsを捨てたと言うのにな。 というか今気づいたけどcargoってSubversion対応してねえのか。pijulとやらより そっち先じゃねえの?
184 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 16:13:07.06 ID:2Ut1GWuy.net] >>175 bitbucketがあるだろ!!(今度こそマジギレ sourceforgeのgitサポートがもう少し早ければ幾つかの連立もあったろうけど sourceforgeは遅れるわGoogle Codeはへっぽこだわでgithub+git一強になったこのご時世は嫌だねぇ pijulが強制されるわけでもなく、今まで通りcrates.ioホスティングがデフォルトだからgithub(git)に依存してないでしょ 個人的には面白いVCSだとは思うけど、率先して採用するプロジェクトはなさそう
185 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 16:17:48.77 ID:CZ4YsNdD.net] cargoのdependenciesにbitbucketのmercurialを書けるようにするissueは、前に見かけた気がする たしか、やる気がないわけではないけど、使いやすいライブラリが無い的な返答だったような 直にリンクするとGPLになるとか
186 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 17:16:09.17 ID:oDUXzovh.net] vcs指定すると何がいいの?
187 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 20:27:02.60 ID:eJzwOC8V.net] >>177 内輪云々というか、たまたま気が向いた人がPRを送ってきたから受け入れたってだけの話じゃないの? それを言い出したら標準ライブラリだってredoxサポートのためのコードがたくさんあるし
188 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 21:39:26.49 ID:OWaLz7yy.net] >>181 普通にrepositoryのURI指定でhg://bitbucket.org/hoge/hageみたいにしとけば動いた覚えがあるぞ githubもgit://github.com/hoge/hageにするし、VCS, 接続サーバを意識してなくないかな 今更subversionやcvsを使う気は無いけど、誰かPR出してみようぜ rejectされるなりacceptされるなり、どっちに転んでも笑い話だと思う
189 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 04:46:24.86 ID:8idv0Ky2.net] pijul(ピフル)試してみた ・ドキュメント無さすぎ ・パッチのハッシュがクソ長いし、指定時に省略できない ・SSH周りがいろいろおかしい。agent使えないとか ・エラーメッセージが全く役に立たない。コード読んで初めて原因が分かる感じ ・現在のバージョンを特定するタグ、IDのようなものが未実装 ・複数ファイルの追加は一つずつ指定する必要がある。ディレクトリ一括とかダメ ・ワーキングディレクトリ内の未追加ファイルを一覧するコマンドが無い。要記憶力 ・ワーキングディレクトリ内の状態を一覧するコマンドが無い ・ファイルとして受け取ったパッチの取り込みを行うコマンドが無いので、自分で.pijulディレクトリの中にコピーするらしい 結論:実用にはあと2年は待ちたい。すぐ使いたいならdarcs使え
190 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 08:42:42.56 ID:V34f+MUj.net] >>185 こんなVCSサポートに入れるとかRustが実用考えて作られてないのがようわかるわ。
191 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 10:47:52.24 ID:FHASBQwb.net] pijul対応はpijulの開発者たちがドッグードするためなんじゃないの pijul自体がpijulで管理されてるからcargoサポートがないと不便そう
192 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 11:06:43.94 ID:Ha8NmJTT.net] 何かRustディスることに血道を上げてる粘着がおるな 自分の言葉で批判しようとするとフルボッコにされるから、最近は他人のまともな批判に乗っかってせせこましいレスしかできなくなってるが >>159 とか>>186 とか
193 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 11:21:32.40 ID:J2O0ntFQ.net] 触れなくていいんすよ
194 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 13:46:58.55 ID:AacmqL/b.net] Cと++は今世紀いっぱいは現役だからな それ以外は覚える価値なし
195 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 14:23:08.91 ID:8idv0Ky2.net] >>187 取り込まれたPR見れば分かるけど、VCSサポートって言っても、cargo newの後に 自動で pijul init を呼ぶだけの処理しかしてない Mercurialのサポートとほとんど同じレベルだが、Mercurialの場合は hg init 呼んだ後に さらに .hgignore ファイルも追加してくれるとこだけが違う 尚、この自動で追加される .hgignore は文法ミスってて使えない
196 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 14:50:16.11 ID:8RIzdpJs.net] もうgitでいいよ
197 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 16:38:35.42 ID:V34f+MUj.net] なんでお前らはこんな文法はゴミクズ、コンパイラはエラーしか吐かない、ライブラリはカス未満の クソモジラの息がかかってる言語なんてありがたがってるのか本気でわからんのだが モジラから金もらってる以外の理由あんの?
198 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 16:43:45.87 ID:FHASBQwb.net] >>191 git://みたいにpijul://みたいなプロトコルのサポートも入ったのかと思ってたけど initだけなら大した話ではないわな それぐらいならsvnだろうがcvsだろうが PR出したら簡単に取り込まれそう
199 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 16:47:08.14 ID:FHASBQwb.net] そういえばsvnはgit init相当の処理はないから cargo newの時にやることないな cvsもよく知らないけど同じかな
200 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 17:28:38.55 ID:gUDVFMBt.net] 釣られないクマー
201 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 17:34:28.98 ID:IftbJTTs.net] ああ、ほんとそんだけなのか。 pijulリポジトリやhgリポジトリからもcargoとってこれるとかではないんだな。
202 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 19:20:36.29 ID:SnVZVp11.net] --vcs=gitすると.gitignoreも出来るんだね
203 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 19:29:45.37 ID:IftbJTTs.net] ところでThe BookがSecondEdition出てるんだけどこれいつからあるんだっけ
204 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 19:50:13.72 ID:8idv0Ky2.net] 誰か、本のレビューしてくれ この本はこういう人向き〜とか The Rust Programming Language https://www.nostarch.com/Rust Mastering Rust https://www.packtpub.com/application-development/mastering-rust
205 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 20:32:21.64 ID:IftbJTTs.net] >>200 上の方まさに「The Book」のSecond Editionの書籍版じゃん。
206 名前:デフォルトの名無しさん mailto:sage [2017/06/11(日) 01:53:28.37 ID:X3vCZvzy.net] 食事する哲学者は、なんでThe Bookから消されてしまったんや
207 名前:デフォルトの名無しさん [2017/06/11(日) 15:06:17.17 ID:qjl5AbWq.net] >>202 それ、俺も思った。 何でだろう?
208 名前:デフォルトの名無しさん mailto:sage [2017/06/11(日) 15:56:53.70 ID:vIRnRvxr.net] 哲学者達がお腹一杯になったから
209 名前:デフォルトの名無しさん mailto:sage [2017/06/11(日) 16:22:24.76 ID:VsqhFcB6.net] トンチが効いててちょっと面白かった
210 名前:デフォルトの名無しさん mailto:sage [2017/06/11(日) 22:30:10.43 ID:X3vCZvzy.net] Second Editionはどういう意図か知らないけど、 "str".to_string() "str".to_owned() の代わりに String::from("str") を全面的に使うようにしてるね
211 名前:デフォルトの名無しさん mailto:sage [2017/06/11(日) 23:46:31.76 ID:XI3qvjLJ.net] String("str")みたいなコストラクタは無いの?
212 名前:デフォルトの名無しさん mailto:sage [2017/06/11(日) 23:49:50.77 ID:9OY4agMx.net] Stringはtuple structでない
213 名前:デフォルトの名無しさん mailto:sage [2017/06/12(月) 00:27:33.38 ID:My6TEn1j.net] https://crates.io/crates/crates_io_baseline このcrate、めっちゃダウンロードされてて草生える
214 名前:デフォルトの名無しさん mailto:sage [2017/06/12(月) 00:29:50.55 ID:MzCSF4Ch.net] 容赦なくて草
215 名前:デフォルトの名無しさん mailto:sage [2017/06/14(水) 09:57:33.18 ID:XYFguvYM.net] Tokio対応したHyperがリリースされたな これからWebフレームワークも対応していくのだろうか
216 名前:デフォルトの名無しさん mailto:sage [2017/06/15(木) 18:41:09.39 ID:mn+yn6ig.net] pijul試してたら、なんかいつの間にかファイルが壊れて、テキストとバイナリがまぜこぜになったファイルが出来てしまった
217 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 09:06:23.46 ID:ktTRVxgn.net] またpijulが使い物にならないからrustはだめとか言うおっさんがくるぞ
218 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 10:33:05.72 ID:HCcCUJCK.net] わざわざ呼ぶなバカ
219 名前:デフォルトの名無しさん mailto:sage [2017/06/17(土) 06:54:44.86 ID:yZgGFQR1.net] Why are there so many Madoka references in Rust's codebase? https://www.reddit.com/r/rust/comments/6hirku/why_are_there_so_many_madoka_references_in_rusts/ アイコン見てれば、容易に想像できることだが
220 名前:デフォルトの名無しさん mailto:sage [2017/06/19(月) 14:55:59.38 ID:86sO1ieZ.net] もしかして盾の歯車?
221 名前:デフォルトの名無しさん mailto:sage [2017/06/21(水) 20:28:41.11 ID:LG7VVo4P.net] crates.ioで、中身無しで名前だけ(たくさん)抑えてる人が居るね
222 名前:デフォルトの名無しさん mailto:sage [2017/06/21(水) 20:52:10.55 ID:0v4/pNjF.net] crates.ioはスクワッティングし放題だしなあ doc.crates.io/policies.html#squatting
223 名前:デフォルトの名無しさん mailto:sage [2017/06/21(水) 21:04:58.61 ID:LG7VVo4P.net] rustって名前のcrate登録しようと思ったら、とっくに取られてた
224 名前:デフォルトの名無しさん [2017/06/22(木) 19:34:29.89 ID:eBYfVtnR.net] そのうちcratesトロール出てくるぞ
225 名前:デフォルトの名無しさん mailto:sage [2017/06/24(土) 00:33:06.17 ID:61WeFMfR.net] 更新止まったの除くとcrates.io使ってるのあんまりないよ。 ホスティング直接探しに行くとrustのライブラリ結構ある。 それより依存型が欲しい。
226 名前:デフォルトの名無しさん mailto:sage [2017/06/24(土) 00:34:41.77 ID:l9zy63QW.net] >crates.io使ってるのあんまりないよ。 ドユコト?
227 名前:デフォルトの名無しさん mailto:sage [2017/06/24(土) 06:06:00.68 ID:cy4Nwj8p.net] >>221 依存型欲しいねー
228 名前:デフォルトの名無しさん mailto:sage [2017/06/27(火) 21:33:58.01 ID:IXk9A5/e.net] なんでalloca()できないの?
229 名前:デフォルトの名無しさん mailto:sage [2017/06/27(火) 21:52:44.33 ID:b1cqibPI.net] https://github.com/rust-lang/rfcs/pull/1808#issuecomment-279123540
230 名前:デフォルトの名無しさん mailto:sage [2017/06/27(火) 22:56:55.59 ID:IIq+ol+w.net] >>225 どゆこと? より一般化してUnsized Rvaluesにしたけど、Openのまま3か月放置?
231 名前:デフォルトの名無しさん mailto:sage [2017/06/28(水) 01:29:39.37 ID:9yiSXbVJ.net] >>226 関連するissueがまだopenのままに見える
232 名前:デフォルトの名無しさん mailto:sage [2017/06/28(水) 11:14:29.14 ID:+O8L6XqQ.net] 瑕疵担保責任(かしたんぽせきにん) 瑕疵担保責任のポイント 民法改正で事実上期限が「無制限」になった バグや設計のミスなどは、瑕疵担保責任 納品物に不具合があれば損害賠償を請求される可能性もある 不具合を指摘されたらすぐに行動をとるべし 軽微なミスでも先延ばししない www.atmarkit.co.jp/ait/articles/1706/26/news014.html itpro.nikkeibp.co.jp/atcl/news/17/052601508/?rt=nocnt 改正法では欠陥に気付いてから1年以内にITベンダーに通知すれば、 通知後5年以内は修正や報酬の減額などを求められるとしている 全ベンダーが泣いた民法改正案を解説しよう その1 www.atmarkit.co.jp/ait/articles/1609/14/news009.html www.atmarkit.co.jp/ait/articles/1609/14/news009_2.html www.atmarkit.co.jp/ait/articles/1609/14/news009_3.html ポイント1:修補や損害賠償、契約解除の期限がなくなる 従来あった「瑕疵担保期間は引き渡しから1年」という考えはなくなる。 条文にある通り、注文者は成果物が契約の目的に適合しないことを発見したら、 その「発見したときから1年以内」ならさまざまな請求ができる。発見が10年後なら、 11年後まで請求可能なのだ。 もっとも、現実のユーザーとベンダーの関係でも、たとえ契約書に「瑕疵担保責任期間は納品から1年と」明記されていても、 「2年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、 バグが見つかればユーザーのところに飛んで行き、無償で改修するだろう。
233 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 18:15:18.87 ID:v+Q0wrxJ.net] Futuresに詳しい人教えて Zero-costを謳ってTraitでコスト削減してるのは理解したんだが id_rpc(&my_server).and_then(|id| { get_row(id) }).map(|row| { json::encode(row) }).and_then(|encoded| { write_string(my_socket, encoded) }) ってやった場合に AndThen x2, Map x1を初期化時に作るコストについては 実行時のコストには乗らないから度外視って理解であってる? Aaron Turonのブログ読んでもそこは言及してないように読めるので教えてくれい
234 名前:デフォルトの名無しさん mailto:sage [2017/07/01(土) 20:18:30.04 ID:9xGm3OAZ.net] コンパイラの最適化で消えるか、消えないにしてもstackいじるだけだから無視できるほど小さいコストなんだと思う
235 名前:デフォルトの名無しさん mailto:sage [2017/07/02(日) 07:08:11.19 ID:91oxOYnU.net] んー、その擁護は微妙に納得いかないかな... AndThen, Mapは状態変数を保持するenumを内包するstructなので消えないはずだよねぇ まぁstackいじるだけという言い分として、ならば実行時のcallでBoxFutureを返すのはバッ
236 名前:ドノウハウってことか BoxFutureを返すのと、Futureを実装したstructを返すのと、どっちがZero-costに近いかは測ってみるか サンプルだとBox<Future>だけど、Tokioは一律structを実装してるから、後者の方が早いんだろうけども [] [ここ壊れてます]
237 名前:デフォルトの名無しさん mailto:sage [2017/07/02(日) 11:32:28.47 ID:onBZ93I5.net] すまん、よくよく考えたら実行中にBox<Future>を返すのは動的にステートマシンのタスクを増やす行為だからNGだ Futureを返さなきゃと.boxed()使ってたけど、素直にPollで結果を包むだけでよかった
238 名前:デフォルトの名無しさん mailto:sage [2017/07/04(火) 00:00:54.04 ID:YlAGoiwI.net] futuers-rsは これfutuereじゃねぇじゃねーか、並列計算してないパイプラインをfutuere呼ぶなよ ↓ すぐにfutures-cpupoolを見つける までが予定調和。 Zero-cost ~~futures and~~ streams in Rust
239 名前:デフォルトの名無しさん mailto:sage [2017/07/04(火) 09:31:46.73 ID:ETZVte8W.net] これZero-costじゃねぇじゃねーか ↓ Zero-cost(コストがないとは言ってない) までが予定調和だったわ 下手な自作設計よりは全然コスト軽いけど鵜呑みは良くないね
240 名前:デフォルトの名無しさん mailto:sage [2017/07/04(火) 10:33:24.16 ID:CTMuvV84.net] まず future の綴を覚えるところからお願いします
241 名前:デフォルトの名無しさん mailto:sage [2017/07/04(火) 12:20:45.83 ID:J0r8gWdS.net] impl Traitじゃあかんのか?
242 名前:デフォルトの名無しさん mailto:sage [2017/07/04(火) 13:09:55.73 ID:Aj2F4wHv.net] aturon氏の記事(Zero-cost futures in Rust)を読めば"zero cost"というのは「直にステートマシンを書いたのと同様のコードにコンパイルする」という意味で言っていると分かるはずで、 状態変数があるからzero costじゃないなどという指摘は出てこないと思うのだけど
243 名前:デフォルトの名無しさん mailto:sage [2017/07/04(火) 13:30:28.66 ID:G2IB7Bn2.net] traitってGoのinterfaceに似てる って言ったら型警察に起こられるんだろうか
244 名前:デフォルトの名無しさん mailto:sage [2017/07/04(火) 14:05:06.69 ID:At6b76le.net] >>237 ? だからコストがないって訳じゃないと理解したんだが タスク構築のための初期化アロケーションとか、ステートマシンのための状態管理(分岐)の少量コストはあるって解説してるよな 言葉遊びによるZero-cost警察の方なら触ってスマン
245 名前:デフォルトの名無しさん mailto:sage [2017/07/04(火) 16:29:36.87 ID:H2zYYmCe.net] 警察じゃなくても激おこやと思うw
246 名前:デフォルトの名無しさん mailto:sage [2017/07/04(火) 16:36:55.49 ID:o8qoMeE4.net] zero costは宣伝文句で、zero overheadくらいが妥当では
247 名前:デフォルトの名無しさん mailto:sage [2017/07/04(火) 18:21:59.60 ID:ZOpHOB0v.net] 実行はゼロコストかも分からんが書くコストが青天井なので結局意味のない言語
248 名前:デフォルトの名無しさん mailto:sage [2017/07/04(火) 19:19:11.80 ID:A2FxzO1+.net] Aaron Turonのブログを引用しながら実は別の意味で言ってましたとか草
249 名前:デフォルトの名無しさん mailto:sage [2017/07/04(火) 22:45:10.68 ID:sW2FXAJU.net] javaはzero-overheadの語を使うけどrustはzero-costを使うよね。 zero-overheadだと追加の余計なコストがかからないという意味がわかるけど、 zero-costだとコストそのものがないと言っているのかzero-overheadと同じ意味で使ってるのか定かではないと思う。
250 名前:デフォルトの名無しさん mailto:sage [2017/07/04(火) 22:53:04.21 ID:Aj2F4wHv.net] Rustでzero-cost (abstraction)といったら抽象化レイヤーによるコストが0という意味だろうね
251 名前:デフォルトの名無しさん mailto:sage [2017/07/05(水) 03:06:44.06 ID:9aEWew1V.net] そもそもがC++界隈からの借用語だしな
252 名前:デフォルトの名無しさん mailto:sage [2017/07/05(水) 16:39:24.43 ID:AAYKoEFk.net] 激おこな警察官が多くて誰がどの立場で何を擁護してるのかワケワカメ とりあえずまぁfuturesやtokioを下手に使うとコストがゴリゴリ上がってくのは分かった ステートマシン(AndThenやMap)も抽象化しきれなかったのかstructでI/F切られてるし注意して使わんとな
253 名前:デフォルトの名無しさん mailto:sage [2017/07/05(水) 17:11:36.04 ID:MzNNcf5c.net] そりゃ、真にコストゼロはありえないだろう 一般に気にされてるのは、C/C++より多いかどうかでしょ
254 名前:デフォルトの名無しさん mailto:sage [2017/07/05(水) 18:08:21.50 ID:tRZ6TMIF.net] だれかGUIライブラリ書いて そしたら社内ツールでC#の替わりに使うで
255 名前:デフォルトの名無しさん mailto:sage [2017/07/05(水) 18:41:42.95 ID:UiQJEPDB.net] ゼロコストがabstractionにかかっていることをつい忘れちゃう まあ普通に考えたら、futuresでもIteratorでもMapを実現したいなら値と関数は保持しないといけないし、AndThenも前と次の値を持ってないといけないよね ラッパー構造体のコストは引数がコピーじゃなければメモリ的にもCPU的にもゼロだったはず
256 名前:デフォルトの名無しさん mailto:sage [2017/07/05(水) 19:26:13.97 ID:AAYKoEFk.net] >>248 別にC/C++と比較してコストがあるかは気にしてないぞ C++ TemplateとRust Traitは実質同じ所に行き着くんだから比較するほどの意味もなし >>250 IteratorやMapを抽象化できないのか?、できないならコスト削減できない不適切なLibではないのか?とは思わないのかねぇ Rustに限らず新興言語はキーワードだけ拾って素晴らしいものだ!みたいな賛美ユーザが多いね >>249 ttps://github.com/kenz-gelsoft/wxRust もう動かないかもしれないけど 去年くらいのwxWidgetsが3.2.0でFFI周りのI/Fを非公開にしてwxHogeHogeが全滅した
257 名前:デフォルトの名無しさん mailto:sage [2017/07/05(水) 19:35:34.06 ID:oPOjLgnt.net] >>150 コンパイラだってバカ正直にMap構造体を用意してそこにクロージャをそのままぶち込むようなコードは生成しないんやで
258 名前:デフォルトの名無しさん mailto:sage [2017/07/05(水) 19:42:23.78 ID:LLvZvDtb.net] >>251 >IteratorやMapを抽象化できないのか? まあ確かにHKTが欲しいと思わないこともないな
259 名前:デフォルトの名無しさん mailto:sage [2017/07/05(水) 19:43:35.74 ID:oPOjLgnt.net] >>252 安価は>>250 の間違い
260 名前:デフォルトの名無しさん mailto:sage [2017/07/05(水) 20:12:29.34 ID:kX6rHoUh.net] >>249 GTKはまともに使えるっぽいけどそれじゃだめなの? 俺はgtkあんま好きじゃないからいやなんだけど
261 名前:デフォルトの名無しさん mailto:sage [2017/07/06(木) 11:00:33.73 ID:tRC1mrQq.net] >>247 >コストがゴリゴリ上がってくのは分かった 何を突然ファビョってるんだか タスクごとのヒープアロケーション数はΘ(1)に抑えられているだろ
262 名前:デフォルトの名無しさん mailto:sage [2017/07/06(木) 20:30:03.81 ID:kH42VxHy.net] 最近の公式の動きを見ていると、WebフレームワークはRocketを推していく方針に見えるな
263 名前:デフォルトの名無しさん mailto:sage [2017/07/07(金) 07:02:47.03 ID:vPLSgrbk.net] >>257 何でよりによってnightlyを要求するRocketなん?
264 名前:デフォルトの名無しさん mailto:sage [2017/07/10(月) 13:13:29.86 ID:Y8I/wQdo.net] >>256 タスク数に合わせてO(n)になってると思うんだけどそれは度外視なのかな?
265 名前:デフォルトの名無しさん [2017/07/10(月) 13:58:50.67 ID:mQ3pGq+a.net] オラクルがrustでコンテナランタイム作っとるってよ
266 名前:デフォルトの名無しさん [2017/07/10(月) 19:18:17.66 ID:l6mkv8ve.net] Building a Container Runtime in Rust | Oracle Developers Blog https://blogs.oracle.com/developers/building-a-container-runtime-in-rust > almost all container utilities are in c or go. > (中略) > Rust sits at a perfect intersection of these two languages
267 名前:デフォルトの名無しさん mailto:sage [2017/07/11(火) 13:53:59.15 ID:5tKo2E+W.net] オラクルの時点でお察し案件じゃん まあオラクルとモジラは業界のゴロ同士仲がよろしいんですなあ
268 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 04:46:26.78 ID:TKiI+WcD.net] google という名前のcrateが上がってて、 説明文が "Google is evil" バージョン番号が "6.6.6"
269 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 20:21:33.28 ID:8a1VCaPH.net] Googleが悪とかやっぱモジカスだわ
270 名前:デフォルトの名無しさん mailto:sage [2017/07/15(土) 17:00:03.78 ID:U+uVxSdX.net] Rust公式がTwitterで"Rocketの新バージョンがリリースされたぜ"とか呟いてて、それに対して"Ironの何が悪いんだ"的なクソリプが付いてるの笑う
271 名前:デフォルトの名無しさん mailto:sage [2017/07/15(土) 23:27:50.25 ID:RjDGp9te.net] RustのSlackでmame氏にCでポインタとか触ったことありますか?って聞いてるやついてワロタ
272 名前:デフォルトの名無しさん mailto:sage [2017/07/16(日) 13:32:06.66 ID:FJgd8SG/.net] 箸が転がったから笑った
273 名前:デフォルトの名無しさん mailto:sage [2017/07/16(日) 13:33:12.21 ID:JEFmdVs4.net] 膝がワロタ
274 名前:デフォルトの名無しさん mailto:sage [2017/07/17(月) 22:50:00.44 ID:8lRCTnOP.net] 関連型ってさなんでいるの? CeylonやC#みたいにgenericsのin/outで実現できない?
275 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 13:42:50.01 ID:NOYbJ+oD.net] >>261 ライブラリの問題とかそういう回避方法はないのかと考察したけど、goroutineの仕様上無理ぽって結論なのか rustが最適な言語かどうかは懐疑的だけど、go以外の使える新興言語ってのは他にないし仕方ないのかねぇ
276 名前:デフォルトの名無しさん mailto:sage [2017/07/19(水) 19:13:52.48 ID:23uwxygM.net] >>269 in/outの方が劇的に良かったりするの?MSDNとか読んでもすぐに理解できなかった
277 名前:デフォルトの名無しさん mailto:sage [2017/07/19(水) 22:47:17.03 ID:UyJFKTdP.net] >>271 良くなったりするわけじゃなくて全く同じもの。 単にrustのジェネリックスに制限があるだけ。 in/outや+/-なのはjavaの境界ワイルドカード型の定義が 長いから短くなったものでキーワードにするかシギルにするかの好みの違い。
278 名前:デフォルトの名無しさん mailto:sage [2017/07/20(木) 00:56:51.60 ID:k7oT/owf.net] C#とか知らないから適当なことを言うけど、in/outって要は型パラメータの反/共変性を指定する構文ってこと? Rustはクラスがないからあまり関係ないような気が そもそも関連型と型パラメータは全く別物だし
279 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 01:30:42.74.net] Announcing Rust 1.19 - The Rust Programming Language Blog https://blog.rust-lang.org/2017/07/20/Rust-1.19.html ・C互換な(untagged) unionの導入 ・loopのbreakで値を返せるようになった ・値をキャプチャしないクロージャを関数ポインタ(impl Fnでなくてfn型)として扱えるようになった
280 名前:デフォルトの名無しさん [2017/07/21(金) 03:20:29.74.net] 新しい言語は早い段階から使い始めれば バージョンアップ時は変更点だけ覚えればいいけど バージョンアップが重なったあとから始めようとすると覚えることいっぱいすぎ Rustよ もっとシンプルに
281 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 08:32:20.79.net] -Zオプションが時報に無視されててワロタ
282 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 12:38:58.44.net] Cargoがhigh level過ぎでrustcがlow level過ぎな課題はいつ解決するんかな 他のビルドツールを使ったプロジェクトにrustを入れるのが今は面倒
283 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 19:27:14.18 ID:juJaC8N3.net] ていうか時報の反応速度が高くて笑う まさかリリースの度に待機してるのか?
284 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 07:37:27.49 ID:m9up21PD.net] > ・loopのbreakで値を返せるようになった 遂に来たか。
285 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 14:32:40.69 ID:IwEFmDCG.net] 時報であることに使命を感じて全力待機してそう, 機械の鑑だよホント
286 名前:デフォルトの名無しさん [2017/07/22(土) 16:14:42.22 ID:Jfa6LaZA.net] 誉め言葉として受け取っておく
287 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 16:20:13.34 ID:rGyFmqNE.net] >>281 誰だお前
288 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 16:39:57.41 ID:WZvf35Ul.net] なお、バグった機械の模様
289 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 17:02:38.46 ID:vk3cyWgj.net] 雑談の種になるよう頑張ってるんだよ、そんなあげつらうことないでしょ
290 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 17:04:33.13 ID:vk3cyWgj.net] というかどこに行けばRustの話をしていいのか分からない。英語ならRedditがあるけど
291 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 17:05:27.55 ID:lf8sQzDC.net] あれ、associated constsはstabilizeされたんじゃなかったのか
292 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 17:10:48.08 ID:rGyFmqNE.net] >>286 現行のbetaではfeature gateが外れているから次のstableに乗るはず
293 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 17:42:07.41 ID:Oi7t7NSG.net] rust-jpのSlackとか? ところでLLしか触ったことなかった俺も最近Rust使い始めてみたんだけど、有識者から見てRustで1番理解が大変なの(あるいは抑えておかなきゃならないとこ…)はどのあたりなのか教えて欲しい。
294 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 18:20:40.76 ID:RlMkEmCd.net] >>288 トレイト ムーブ 参照(borrowing) Javaも触ったことないならトレイトは最初難しそう
295 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 20:18:18.76 ID:s9rnd8yr.net] slackの質問に対するリアクションありすぎてこわい
296 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 20:29:54.52 ID:Oi7t7NSG.net] >>289 ありがとう 公式のチュートリアルみたいなやつ進めてるんだけど今のところトレイトオブジェクトらへんでちょっと理解に苦しんでる
297 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 12:10:36.01 ID:1TXRI9Gx.net] rustって現場で使われ始めてるの? メモリ管理周りのメンタルモデルって他の言語に応用利いたりする? コードがきれいになるとか? 始めるモチベが欲しい。
298 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 12:28:38.82 ID:zGGIqffP.net] C++ほど辛くない
299 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 14:12:02.33 ID:K7WDOtB+.net] >>292 1.クソコードをコンパイルさせてくれない 2.コンパイル通すの少し大変だけど実行時エラーが本当に出ない 3. 速い 4.パッケージマネージャーがよくできてる 1は本当に大きくて、自分のコードとコンパイラが喧嘩になると大抵自分のアーキテクチャが悪く、直すとちゃんと正しい実装になって感動する。つまり正しいコードが書けるようになる
300 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 14:19:11.38 ID:1TXRI9Gx.net] >>294 もう一つ。仕事で使ってたりする? goのcliツールはよく見るんだけど rust製って何が有名なのかね? ブラウザ以外で
301 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 16:50:51.12 ID:emVJufwa.net] 仕事で使ってるかは別としてcliツールは作りやすい印象
302 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 17:05:29.37 ID:gGn38L0V.net] ripgrepしか紹介できないんだがなんかないのか
303 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 17:19:06.22 ID:5AMOakOe.net] redoxosのシェルやエディタはunix用としてもビルドできるし 有名かは別として
304 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 18:24:11.57 ID:v7SfrUaR.net] ripgrepはもちろんだが、tokeiも便利だよ ion-shellもよく出来てる
305 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 18:47:46.45 ID:xH7iVUfu.net] https://github.com/rust-unofficial/awesome-rust
306 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 19:32:19.52 ID:TrXPl61y.net] tokei のレポジトリにある使用例 https://asciinema.org/a/d14m9g1d2cyo7wvrxh0z4ck6o を見てみたら、F* と Ur/Web がカウントされていたので「あっ(察し」事案だった
307 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 23:36:39.90 ID:mh/Tz+0K.net] 確かにcliは書きやすくて社内で使ってるサポートツール類はほとんどRust製。 小さいツールだと関係者も少なくて説得しやすいし。 https://www.rust-lang.org/ja-JP/friends.html こことか見ててもそういうパターンが多いように見える。 さすがに大規模なプロダクションコードをいきなり 置き換えとか無理だろうし。
308 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 23:43:54.02 ID:Dtg+FNV7.net] Rustである旨味なさそうだけど学習用?
309 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 06:07:27.53 ID:5XPEt11J.net] おお、色々情報ありがとう。 今のところgoのcliツールのほうが目立ってるのは、単純に1.0のリリース時期の違いによるものなのかな。 redox は気になるなー。rustのメモリ管理の仕組みからいってバグが少ないosになるのかな。ちょっと試してみたいかも。reduxと名前が似てるのがなんかやだけど
310 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 10:59:30.41 ID:ULTUdplU.net] goのツールをパクって速いのを作ればいいのか? goのツールは何があるの?
311 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 11:37:29.68 ID:5XPEt11J.net] 俺が知ってるのは peco、ghq 辺りかな。 ghqは常用してるけど最近重くなってきてるからぜひrustで軽くなるならして欲しい。 多分gitにアクセスしてる部分がボトルネックな気がするけど。
312 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 11:45:28.60 ID:5XPEt11J.net] あとgitをrustで書き直したらはやくなるとかないかね。 ライナスに喧嘩売ることになるかもだけど。 それをきっかけにlinuxをcにこだわるのをやめてくれるかもw
313 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 12:39:25.58 ID:fQ81IbD6.net] pecoもghqもすでにrust版あるよ
314 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 13:18:07.15 ID:E8ESHMbJ.net] wasmがもっと成熟すれば...
315 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 14:21:47.66 ID:5XPEt11J.net] >>308 へー。リンク下さい
316 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 16:53:49.81 ID:qEbQGi9S.net] >>310 https://crates.io/crates/rhq https://crates.io/crates/skim
317 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 17:33:21.29 ID:CUwpfKAw.net] skimええやん
318 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 17:38:52.31 ID:qu0St3oz.net] >>307 Facebookが社内向けにMercurial(Python + C)をRustで一部?書き直したら速かったらしい 俺も、社内向けツールを前任者がgoで書いたのを幾つかRustに移植してる ただの練習素材として移植してたけど、2〜3倍速くなったよ
319 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 19:00:41.47 ID:FbhHJVqk.net] 「Rust 1.19」リリース。union(共用体)をサポート www.publickey1.jp/blog/17/rust_119union.html
320 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 20:32:46.37 ID:5XPEt11J.net] >>313 おおー。魅力的な話だね。 メモリの使用量もrustだと減るようなきがするんだけどそのへんどうかな。
321 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 21:45:29.88 ID:7Ef69C7C.net] rustは今の日本だと凄腕のプログラマが使ってるところはちょいちょい見かけるな。 もっとwebの人たちがたくさん布教すればいいんだろうけど、やっぱrust自体が難しいのかね。 C++とよくセットで名前が出てくるから、ビビる人が多いのかなーとも思う
322 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 22:11:08.39 ID:FfK5LQFv.net] 最近真面目に勉強し始めたけど潜在的に難解なバグを生み出す汚いコードを平気で書く人だと コンパイルが通らないので辛いと思う。 若干煽り気味に言えばPHPやRailsだけやってプログラミングを分かった気になってちゃんと勉強してない人には無理。
323 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 22:21:26.92 ID:5XPEt11J.net] ios -> objc, swift android -> kotlin,java web frontend -> typescript, javascript web backend -> go,ruby,php ってイメージだがrustはどこに入るの?
324 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 23:01:36.50 ID:w/P80i1O.net] webassemblyの今後の成熟具合によっては、 web frontendに食い込んでいくかも
325 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 02:52:39.50 ID:mSfCdN7l.net] >>318 希望的観測で言えば、 今までC/C++で書かれていたようなもの全てと、今goで書かれているものの半分 -> rust WebAssemblyをほんとに必要としてるのは、ごく一部の人だと思う
326 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 08:56:45.29 ID:ENBFGRGX.net] >>320 例えばc++ でUE4って書かれてるけど そこをrustでってのはあるのかな? ゲームエンジンとかはc++ってイメージだけどそれがrustでどうなるのか興味あるなー。 c++よりバグが少なくなってメモリ使用量も減るなら 家庭用ゲーム機とかの性能向上に役立ちそうだけど。
327 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 10:26:21.34 ID:ENBFGRGX.net] https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/dining-philosophers.html このチュートリアルもうちょいなんとかならないのか クロージャー周りの説明が抜けてるからなんだかふわっと触って終了みたいな感じになるんだけども。シンタックスの方から学んだほうがしっくりする。
328 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 12:59:44.03 ID:TL1HhZT+.net] >>321 ゲームエンジンそのものがRustで書かれているのでなければ移行はないと思ってる 自分は据え置き開発だけど、ライブラリやツールやアセットパイプライン含めてC++ならそのまま利用する方が楽だし、ゲーム会社ならC++の資産やノウハウも蓄積されてる
329 名前:デフォルトの名無しさん [2017/07/26(水) 16:21:03.85 ID:G2QlGkU/.net] >>323 環境的にc++14使うくらいは許されてるの?
330 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 18:20:47.88 ID:1Yp0AYo7.net] >>324 基本C++11かな 部分的に14の機能も使えるかも そのうち使えるようになると思われる
331 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 18:36:05.35 ID:0VRUk0dC.net] >>320 はゲームエンジンそのものがrustにならんかのーって話じゃないの その上っ面はC++のままで良いんでない
332 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 19:49:44.76 ID:FgKZS4eT.net] >>322 最新ではその項無くなったよ
333 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 00:05:30.43 ID:YcR0VV5Q.net] >>327 なんややっぱりそうなんだ。 やっててあんまり面白いとも思えなかったしね。 今シンタックスのところを読んでるけど、goより学習コストは高いなーと思った。 メモリ管理のメンタルモデルは学習を避けることができないから、尚の事学習コストは高いよね。 使い始めに関してはc++より難しいんと違う?
334 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 00:15:56.27 ID:YcR0VV5Q.net] goを学習するモチベーションとなったのはgoroutineで並列処理を簡単に書けるからだったんだよね。 phpのバッチ処理を学習期間は2,3日で goで並列処理を書けるようになった。 まぁ書けたってだけでgoの流儀って独特だから、その後の深淵に結構はまっていったんだけど。 深層学習の為のpython。 iosのためのswift。 みたくrustの始めるきっかけとなる分野ってなんかないのかな? rustを書きはじめる皆さんのきっかけを教えてください。
335 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 08:45:36.82 ID:alz7xNNS.net] >>329 社内でのC++開発に疲れて代替を探して。 ブライベートで使って、社内もこれにしたいと妄想する。そして誰も社内でRust使えない。
336 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 09:07:26.49 ID:alz7xNNS.net] >>313 Rustにしちゃって、あなたの後任が困るとか、そういうことはないの? 社内でもRust認められてる?
337 名前:デフォルトの名無しさん [2017/07/27(木) 10:08:19.56 ID:JZl+5b/l.net] コードに問題があればcargo runでエラーが出ますけど ビルドせずチェックだけを行う方法ないですか? あと定番のlintツールも教えてください
338 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 11:54:01.80 ID:NVUZFqS5.net] cargo check clippy
339 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 12:47:34.70 ID:tmRnr4Iu.net] >>331 前任者も認められてたからgo使ったわけじゃなく、goがもっとマイナーだった頃に勝手に使ってただけだし 俺も存在するかどうかわからない後任者など気にしてない うちは大きな会社じゃないので、何を採用するかはプロジェクトリーダー次第
340 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 14:28:39.09 ID:MedrFN4m.net] 是非rust使ってレポートしてほしい
341 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 21:27:35.77 ID:YcR0VV5Q.net] rustって課題を解いていく感じの学習サイトってないすかね? goとかjsだとあるんだけど、、、
342 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 00:41:42.43 ID:eqr+g7ZD.net] rusr by example 本家 https://rustbyexample.com 日本語訳 rust-lang-ja.org/rust-by-example/
343 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 08:34:02.73 ID:O7VztC89.net] >>337 わぉ。ありがとうございます。普通にあってよかった
344 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 10:12:39.22 ID:APGd6g7o.net] nightlyって頻繁に更新ありますか? モバイルに接続してるのであんまり通信したくないからstable選んだんですけど clippyがnightlyでしかインストールできないのつらい
345 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 13:36:38.25 ID:IiZPJKRx.net] てすと
346 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 17:20:05.54 ID:HRHd+c6j.net] cargo checkだと全てのrsファイルをチェックするので cargo check hoge.rsみたいに特定のファイルを指定してチェックする方法ありませんか?
347 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 17:54:04.02 ID:ABEdHekZ.net] Stableでは無理 Incremental compilationの安定化を待ちなされ
348 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 18:24:34.83 ID:cPwtoBYF.net] >>342 あ、そのモジュールが他のモジュールに全く依存していない場合はrustc hoge.rs --crate-type=lib --emit=metadataが一応使えるんだった ただしこれはカレントディレクトリにゴミをまき散らすからあまりおすすめできない
349 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 21:55:20.59 ID:3/dxxKLW.net] REPLが欲しいんですが安定したやつないかな
350 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 22:25:19.67 ID:kWrQnfQi.net] 目の前の便利な箱で調べること出来ない教えて君は 実はRustで作った人工知能試験で動作試験してるんじゃなかろうな
351 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 22:36:44.17 ID:GOfdf3yM.net] いまbookやってるんですけど fn main() { let x = 1; println!("Hello") } これ1回目buildすると warning: unused variable: `x` --> src/main.rs:2:9 | 2 | let x = 1; | ^ | = note: #[warn(unused_variables)] on by default って出るのですが、2回目buildするとこの警告が出なくなる なんででしょうか?
352 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 22:40:19.95 ID:jE9FvNjp.net] コンパイルの結果がキャッシュされているから
353 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 00:47:07.63 ID:DIZfrj77.net] rustってまだ安定してない感じ? 開発環境は何がおすすめなんです? vscodeを試したけどあんまりrustに対応してない感が
354 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 02:31:25.76 ID:ZD4o/AdV.net] >>348 俺はIntelliJ派だから
355 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 02:34:36.68 ID:7woiJ3eO.net] そうですか
356 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 10:51:47.46 ID:Xgmp5DuD.net] Rustについて調べているのですが2点ほど質問です ・所有権、借用権ってどのようなケースを想定した機能なのか? 並行処理を行うコードを書く時には同期ミスによる破壊を防止できて便利そうだけど上手い活用ケースを想像できない ・OS無しで動かす
357 名前:コードを書くケースでRustが謳うメリットはどの程度いかせるのか? メモリマップドレジスタへアクセスするためにunsafeと生ポインタを多用することになる このようなケースでコンパイル時の安全性の検査条件などはカスタマイズできたりするのか [] [ここ壊れてます]
358 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 12:41:44.44 ID:cTpvw2dC.net] vim + project.vim + rust.vimもいいぞ コード量が多いと流石にIntelliJ使うけど
359 名前:デフォルトの名無しさん [2017/07/29(土) 12:52:24.62 ID:U9LihKmk.net] IDEAとvscodeってどっちがおすすすめ?
360 名前:デフォルトの名無しさん [2017/07/29(土) 12:52:42.83 ID:U9LihKmk.net] おすすめ?
361 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 14:45:43.16 ID:3C62sBLB.net] >>313 噂をすればなんとやら facebookexperimental/mononoke: A Mercurial source control server, specifically designed to support large monorepos. https://github.com/facebookexperimental/mononoke >>351 メモリ安全性以外での所有権の活用例としては、すでにボディを書き込み始めたHTTPレスポンスに新たにヘッダを書き込めないことを静的に保証する、とかいうのがある https://docs.rs/hyper/0.10/hyper/server/index.html#an-aside-write-status ヘッダを書き込んだレスポンスの所有権を奪って、ボディだけを書き込める型にして返している https://docs.rs/hyper/0.10/hyper/server/response/struct.Response.html#method.start
362 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 16:04:35.17 ID:OScYBSe+.net] もののけ
363 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 16:29:29.84 ID:PuR8d8Sj.net] ideaのrustプラギンはメソッドチェインが深くなるとハイライトされなくなって、リネームとかも取りこぼすことがある。それ以外はよくできてて満足
364 名前:デフォルトの名無しさん [2017/07/29(土) 16:43:27.84 ID:mj0H/MXI.net] >>351 所有と借用は、設計の考え方として言語問わず有効なので、コンパイラに強制されるのはかなり嬉しい。 と言うのも、所有を考えないで動的メモリを使ったプログラムは、シングルスレッドであっても、ライフタイム問題を起こしやすいんだよね。 他人にヤラれると殺意がわく。
365 名前:デフォルトの名無しさん [2017/07/29(土) 16:55:38.17 ID:mj0H/MXI.net] >>351 借用に関しては、不意の同期漏れ防止と思ってる。 ご存知の通り、マルチスレッドでは、同じオブジェクトを触るときに同期処理を入れないと、データ破壊しちゃうじゃん? C言語だと、この危険な状態がデフォルトで、気付くかどうかは人間次第。 でも、rustはコンパイラがその危険な状態を防いでくれると言うだけだと思う。
366 名前:デフォルトの名無しさん [2017/07/29(土) 17:08:36.25 ID:mj0H/MXI.net] >>351 最後、OS無しはどうかなー。 自分ならこうするかなっていうテキトーな意見だけど、生メモリアクセスが必要な部分(デバドラとか)はC/C++で書いて、アプリ部をrustで書いてFFIバインドかなー。
367 名前:デフォルトの名無しさん [2017/07/29(土) 17:23:05.64 ID:H7MJnrUX.net] Rustの素晴らしさを理解するにはC++を理解する必要がある?
368 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 17:27:03.96 ID:DIZfrj77.net] >>360 メモリ安全にかけるのがrustなら 最初から最後までrustで書けるべきじゃない?
369 名前:デフォルトの名無しさん [2017/07/29(土) 17:41:05.57 ID:mj0H/MXI.net] >>362 最初から最後までメモリ安全じゃなくてもいいんじゃない? 適材適所で使い分ければ。 マルチスレッド問題はアプリ側に多い問題かなーって。 デバドラ最下層になると、そもそもマルチスレッド要件が無かったり、メモリイメージが生で見える触れる方が融通があって便利だったりするし。 ドメイン境界で考えて、rustを適用する範囲内で潔白なのが重要と思ってる。 この潔白さは、開発者の人数が多いドメイン(アプリ)で、真価を発揮するんじゃないかなと。
370 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 18:00:00.71 ID:SaJE2wIQ.net] racer + flycheck-rust でマクロ補完って無理? println!とかwrite!とか毎回全部打つのがダルい
371 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 18:10:49.31 ID:DIZfrj77.net] >>363 結局cには勝てないのか。 rustってgcがないからメモリイメージを直接いじりやすいのかと思ってたよ。 redoxとかも結局c++に頼ってたりするんかな?
372 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 18:13:03.21 ID:DIZfrj77.net] >>363 あと最初から最後までメモリ安全のほうが良くない? 少なくともメモリ関連のバグを撲滅できるんであればrustの価値はあると思うんだ。 逆にできないならrustの存在意義ってなんだろ。 goは並行処理が言語機能に組み込まれてる。 rustはメモリ安全が売りだと思うんだけど、 そこってなかなか地味な売りな気がして
373 名前:デフォルトの名無しさん [2017/07/29(土) 18:57:22.38 ID:mj0H/MXI.net] >>365 Cに頼る→負けてるって事じゃないと思うけどね。 実際アセンブリ言語はなくならないわけだし。 CPU の高機能化、メモリの大容量化、プログラムの大規模化、があって、開発効率を高めるために、プログラムの大部分がC言語に置き換わったわけじゃん。 で、マルチコア全盛の時代になって、正常稼働面での重大要因としてメモリ安全性が注目されてrustが生まれたのだから、メモリ安全のメリットの大きいところだけrustに置き換わるってのが、普通の流れじゃないのかなーと思うよ。 別にCを駆逐する必要はないしょ。
374 名前:デフォルトの名無しさん [2017/07/29(土) 19:02:32.30 ID:mj0H/MXI.net] >>366 そもそも、ハードに近い層でのメモリ安全性って何?って話だと思うんだ。 で、メモリ安全の話が出てこない領域なのだから、rustの出番が無いって事で良いんじゃない?
375 名前:デフォルトの名無しさん [2017/07/29(土) 19:05:29.70 ID:mj0H/MXI.net] >>361 むしろC++をうまく使うために、rustの意味論(セマンティクス)を勉強して欲しい、って思う。
376 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 19:59:14.72 ID:DIZfrj77.net] goができたのはgoogle社内のc++プロジェクトの置き換えのためだけどrustってどんな動機でできたの?。 まさかブラウザ開発のため?
377 名前:346 mailto:sage [2017/07/29(土) 20:14:02.81 ID:DdYvAide.net] >>347 キャッシュを無効にして毎回警告を出すにはどうしたら良いでしょうか?
378 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 20:22:55.12 ID:OScYBSe+.net] >>369 俺もRustはじめてからC++が少しよく書けるようになりました
379 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 21:18:30.65 ID:ZD4o/AdV.net] >>355 へー、monorepo用だからモノノケとな mercurialをベースに仮想ファイルサーバーにする予定とは、なかなか壮大な計画だ
380 名前:351 mailto:sage [2017/07/29(土) 21:52:24.31 ID:Xgmp5DuD.net] レスありがとうございます >>355 ,358-359 なるほど。やはり並列処理時の安全性を担保する機能なのですね 組み込みでRTOSもどきを作って並列処理させるなんて場合には有効なのかな >>360 構文上罠が多いC/C++の代替となる言語を探していてRustを検討しています なのでC/C++を使わずにC/C++相当のことを行いたいです 警告もエラーも無しに動作だけがおかしいとか勘弁して欲しいです 他にDも検討していますが何となく新しい方が何かと便利かなと思ったり・・・
381 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 03:44:39.97 ID:m1nsIIH9.net] 以前にこのスレであったら良いと言われていたOptionのEntry風APIが実装されて、しかも既にstabilizeされている std: Stabilize `option_entry` feature ・ rust-lang/rust@ee064c3 https://github.com/rust-lang/rust/commit/ee064c380652fb7e40c1620fd74fb1406989d009
382 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 08:00:41.23 ID:eSrcFrA9.net] >やはり並列処理時の安全性を担保する機能なのですね race condition の解消はあくまでもメモリ安全の一部でしかない
383 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 08:02:46.70 ID:eSrcFrA9.net] >
384 名前:他にDも検討していますが何となく新しい方が何かと便利かなと思ったり Dが検討対象に入って、かつ、低水準用途なの? 意味わからんな [] [ここ壊れてます]
385 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 08:03:42.92 ID:NzSybo/S.net] 351からは実際にプログラム組んだことの無い人の気配がプンプンしてる。
386 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 11:40:03.02 ID:sZ4wntzb.net] cargo check のメッセージが加工しづらい https://github.com/rust-lang/rust/issues/42653これ追加されて欲しい
387 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 16:21:42.29 ID:vygP638r.net] たぶんnode.js育ちの人だと思うけど、実質1行ないし3行で完結してるクレートが出てきてるね
388 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 17:42:42.26 ID:cNiju5gN.net] clippyインストールできないclippyインストールできないclippyインストールできない clippyインストールできないclippyインストールできないclippyインストールできない clippyインストールできないclippyインストールできないclippyインストールできない 修正したコミットがが日曜の夜にコミットするって作者が言ってるけど遅すぎ 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
389 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 19:43:29.15 ID:IhAKIxVt.net] CランタイムをスタティックリンクしたくてRUSTFLAGSに以下のフラグを設定しています。 RUSTFLAGS='-C target-feature=+crt-static' これを環境変数で設定するのではなくCargo.tomlで指定するにはどうすればいいんでしょうか? doc.crates.io/config.html を参考に下のように書いてみたのですが効いてないようでした。 [build] rustflags = ["-C target-feature=+crt-static"] オプションの書き方が違っているんですかね?
390 名前:デフォルトの名無しさん [2017/07/30(日) 19:51:11.45 ID:m1nsIIH9.net] ["-C", "target-feature=+crt-static"] でどうかしら
391 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 20:00:04.61 ID:IhAKIxVt.net] うーん、このへん試してみたんですけどだめなんですよね。 ["-C", "target-feature=+crt-static"] ["target-feature", "+crt-static"]
392 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 22:39:37.27 ID:KR/rniwV.net] >>381 一時的に古いnightly使えば良いのでは
393 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 23:38:44.64 ID:dsY+op8E.net] まだruct学んで2日目だけど これパッケージ入れる時のコンパイルが長いね 補完強化のためにracer入れようとしたらsyntax_syntaxから全然進まなくてCTRL+C押しちゃったよ 基本的なものを覚えるだけならパッケージなんて入れなくても良さそうだけど ステップアップしたときにそれなりのスペックのPC持ってないと学習するのが厳しい言語って感じ
394 名前:351 mailto:sage [2017/07/31(月) 01:33:05.73 ID:0NH1HYUL.net] >>377 C/C++より判りやすく罠が少なくC/C++で出来ることは全て出来る言語を探しています >>378 ネイティブに動くプログラムで一番経験があるのはアセンブラ(組み込み)です C/C++はなんの警告もなくメモリがぶっ壊れるし、どこが壊しているのかも判りにくいし 苦手です
395 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 09:17:51.12 ID:nR0sqwYk.net] アセンブラは型がないぶんさらにメモリ壊しやすいと思うが
396 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 13:44:43.25 ID:luO5NyKL.net] ライフタイムもコンパイル時に検査してライフタイムの外側からアクセスする処理もコンパイルエラーにするって これって結局 全部ローカル変数になるってこと? プログラム全体を通してアクセスする変数はmain関数で用意したローカル変数だからmain関数を抜けたあとは全部開放しちゃうからメモリリークも起きない? cとかでもやろうと思えばできるって事? cでmallocとかfreeを使わず、 全部変数定義してつかえばrustと同じ?
397 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 16:54:10.50 ID:RkZnFpRc.net] メモリに限らずリソース確保全般を行わないプログラムって何ができるのか 可変サイズの入力を受け取るならmallocがほ
398 名前:ぼ必須じゃない? 1行MAX_LENGTH文字までのテキストしか処理しないとか? [] [ここ壊れてます]
399 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 17:16:32.22 ID:CRPdTSOK.net] rustってどんな分野に向いてるのかいまいちわからないんだけど webに使うのはおすすめできる?
400 名前:351 mailto:sage [2017/07/31(月) 19:18:45.74 ID:S3S/4XWd.net] C/C++は言語仕様的にメモリの破壊を誘発しやすいと思っているんだけどそう思うのは自分だけなのだろうか >>388 プロジェクトやプログラムの規模という要素もあるけどメモリを自由に管理できるアセンブラの方が見通しが良く メモリ破壊に関するリスクも制御しやすいと思う。人間が理解しやすいように並べることも出来るし もしメモリを壊した時もC/C++より何が起きるかを予測しやすいと思う 個人的にはメモリアクセスの規約を登録できてコンパイル時にそれをチェックしてくれると嬉しいんだけどな
401 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 19:24:58.57 ID:nTqL7k1O.net] アセンブリ的な観点でCの挙動が予想できないと言っているようならRustなんて余計に抽象的で分かりづらいと思うのだが Volatile関連の制御とかだって面倒なだけだし
402 名前:351 mailto:sage [2017/07/31(月) 21:28:38.42 ID:S3S/4XWd.net] >>393 C/C++はメモリマップを意識しないと安全を確保できないけど、マッピングするのはコンパイラでありリンカでありOS そのような状態で想定しないメモリアクセスが起きた時の挙動を予想することは自分には出来ないです C/C++でバリバリ書いている人はこの程度出来て当たり前なのかな
403 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 22:26:49.07 ID:nR0sqwYk.net] C/C++というレベルじゃなくて LinuxのABIやldのリンカスクリプトがわからんレベルの人と予想
404 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 18:09:39.02 ID:TrH0Acv/.net] >>391 いわゆるWebアプリを書く言語としてはおすすめしない。
405 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 18:17:25.28 ID:TrH0Acv/.net] >>392 C/C++に慣れていないだけでは。 もしくは動的なメモリ確保を想定していないとか。
406 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 18:21:43.31 ID:TrH0Acv/.net] >>394 (わりと一般的な)OS上で動かす限り、アセンブリ言語で書いても リンカとローダが介在することには変わりないと思うけど。
407 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 18:52:10.83 ID:8J/offgv.net] >>351 はOS無しと言っている
408 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 19:26:38.99 ID:A6tuVNB3.net] >>351 OSなしアセンブラを必要とする層で使える汎用高級言語を探してるならRustは適さないからお帰り そういう言語が存在する気はしないけど夢追い人っぽいから応援はしてるよ
409 名前:351 mailto:sage [2017/08/01(火) 19:28:04.99 ID:ascdikyg.net] 新しめのプログラミング言語は十中八九メモリの安全を謳っているけどこれってC/C++でメモリの破壊や メモリアクセス違反を多発させる事例が多いからと思っているけど違うのかな これらの低減を目的にC/C++の代替言語としてRustやDなどを検討するっておかしな事なのだろうか
410 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 21:16:08.18 ID:PIQ133u2.net] >>400 まじかーgcがないってOS無しで動かせる唯一の言語だと思ってたから残念 例えばESP8266とかESP32で使えたらいいとか思ってたよ。 webが利用用途じゃないって残念すぎるな。 そうするとrust使ってる層って仕事でc++を使ってる組み込み関係の層が 趣味的に触る言語ってことかな。
411 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 22:02:02.77 ID:A6tuVNB3.net] お前の中ではGC有無とOS要否は直結するのか(驚愕 ESPがどういうチップセット構成なのか知らんけど ARM CPUならクロスコンパイルして動かせるんじゃね 多分、同じ程度の努力でGC載ってるGoも動くと思うけど
412 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 22:04:43.31 ID:H6BRQUwS.net] cargo checkすると warning: the option `Z` is unstable というメッセージが出るそうなんですがこのメッセージを出す方法を教えて頂けませんか?
413 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 22:04:54.04 ID:8J/offgv.net] Webに関してはそれなりに精力的に開発されているから将来的には使い物になる可能性もある crates.ioとかだってRust製だしね
414 名前:351 mailto:sage [2017/08/01(火) 22:43:53.38 ID:ncmaIafS.net] >>402 ググるとラズパイ(タダのLinuxだが)向けコードをRustで書いてみたとか、プレステ1用のコードをRustで書いてみた とか出てくるんだよね。自分が組み込みに使えるんじゃないかと思ったのもその辺が目にとまったから 昔よりかなり良くなっているとは言え汎用機と比べるとデバッグ手段は限定されるし、コンパイル時にコードの妥当性が ある程度保たれるというのはメリットだと思う 組み込みで「どこかのメモリを壊しているようだが皆目見当が付かない」なんて事態は可能な限り回避したいしね
415 名前:デフォルトの名無しさん [2017/08/02(水) 00:38:23.97 ID:Oyyz61S9.net] >>400 いや、そういう用途向けでしょ。 実際にOSの実装に用いられてるし。
416 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 00:46:25.26 ID:9o+N0qJU.net] 上の人はOSを書こうとしているんじゃなくてOS無しのままコードを書くつもりなんでないの? 言い換えると、extern crate coreすら出来ないやつ
417 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 01:03:22.66 ID:OoZ5R2Ag.net] なんか勘違いしてる人がいるね Rustが強いのは「ちゃんとラップしてあげれば」どんな環境でも「安全に」動かせること 例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる ただこのラップするっていうのが一番面倒で、そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える ちょっとググったらArduinoでRustを動かすためのライブラリもあるからその辺り参考にすると良さそう >>408 OS書くのもOS無しで書くのも変わらないと思うんだけど、coreを含められないってどういう状況? libcoreは何にも依存してないからそんな状況ありえないと思ってた
418 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 01:08:41.51 ID:CN84q205.net] アセンブリ君
419 名前:351 mailto:sage [2017/08/02(水) 01:16:10.65 ID:Qb6MNIfM.net] あー・・・何となく判ってきた。組み込みでそのようなコードを書くのか判っている人からレスが付いていたのか
420 名前:デフォルトの名無しさん [2017/08/02(水) 01:21:03.63 ID:E8GFzbft.net] >>396 >>405 今は使い物にならないって事? 向いてると思って趣味のWEBアプリに採用したけどやめたほうがいいのかな Golangは古臭すぎて使う気起きないし 正直速度はどうでもいいけど構文が好き
421 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 01:21:20.56 ID:Hth04IJp.net] coreだって何にも依存しないというわけではない、けれどそれは自分で用意すれば良いしね rust_begin_panicとかをどうやって用意するのかは知らないけど
422 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 01:22:27.24 ID:/y5AMSWR.net] RustでもOS書けるでしょ (もちろんCと同じく最低限のアセンブラはいるが) ぐぐればいろいろ見つかるぞ
423 名前:351 mailto:sage [2017/08/02(水) 01:38:12.16 ID:Qb6MNIfM.net] >>411 ミスった。訂正 × 組み込みでそのようなコードを書くのか判っている人 ○ 組み込みでどのようなコードを書くのか判っていない人 >>409 >例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる そういう話を聞きたかった。レジスタの操作順までコンパイラレベルで面倒を見てくれたらありがたいと思う xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。その定義を作る気力があるかはともかくとして >そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな もちろん入力値のチェックは必要になるだろうけど
424 名前:デフォルトの名無しさん [2017/08/02(水) 02:29:19.43 ID:OoZ5R2Ag.net] >>413 確かにmemcpyとかあるね、忘れてた まあこの辺りはCでも間違いなく自分で書くとこなので大したコストじゃないね > rust_begin_panic 組み込みならシリアルにでもログ出して無限ループとかが普通かな? こういうのはOS系のプロジェクトがとても参考になる >>415 > その定義を作る気力があるかはともかくとして 実行時チェックなら多少楽になるだろうしそこは(精神的)コストとの相談だね > ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな 個人的にはunsafe使い始めると至る所で使うようになっちゃうのでお勧めしない Rustの思想的にも未定義の挙動を許すunsafeはできるだけ避けるべきだしね そんなの気にせずチェックしたいとこだけチェックさせるLint的な使い方もありっちゃあり
425 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 07:02:07.94 ID:nq2BG13A.net] redoxのアセンブラで書いてる所すらもrust(高級言語)で書きたいって夢を語ってるんじゃないの? 結局何がしたいのか分からんな・・・ そこについては諦めているなら既に実用化されているし そこを追っているならチップ毎のクロスコンパイラ作りを頑張れとしか言いようがねぇよ
426 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 08:11:06.98 ID:Oyyz61S9.net] >>415 レジスタまで意識する用途なら、高級言語を使わないのが正解では > xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。 それこそボード固有の話になるので。 高級言語でやるとしたら機能レベルで関数化して中身はインラインアセンブリで頑張るとか。 何れにせよ言語レベルで対応する話ではないな。
427 名前:デフォルトの名無しさん [2017/08/02(水) 10:50:44.07 ID:AyM7Pnm7.net] >>412 >向いてると思って趣味のWEBアプリに採用した やってみたら良いと思う。 仮にミスマッチだったとしても、過程や結果を公開すれば、色んな人の役に立つ。
428 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 12:12:53.41 ID:m0LDca1I.net] rustっていまのところ 何にも向いてないということか。 golangみたいにgoといえば並列処理!みたいなウリがないとなかなか厳しいな。 とりあえずwebはgoでいいや。
429 名前:デフォルトの名無しさん [2017/08/02(水) 12:21:18.09 ID:E8GFzbft.net] >>419 webアプリ作るならunsafe必須とか? cもc++も触った事ないからunsafeだけは無理なんだけど…
430 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 12:56:49.05 ID:qhSfUKHc.net] 変なチューニングに走らない限りはunsafeは不要 ただしRailsでいうところのDoorkeeperやPaperclipみたいな便利ツールが少ないからそのあたりは自力でどうにかする必要がある あと、現状で主要なフレームワークはみんなsynchronous。ただしRocketはそう遠くない将来にasync対応しそう。Ironはそもそもやる気があるのか分からん
431 名前:デフォルトの名無しさん [2017/08/02(水) 15:19:15.45 ID:E8GFzbft.net] >>422 unsafeは不要なのか、よかった Railsは使ったことないから分からない 今まではNode.jsでexpress使ってたからそのまで分厚いフレームワークは使ったことない rustってイベントループじゃなくてスレッドだよね?10K問題はどうなの?
432 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 16:38:11.64 ID:I334RkfN.net] goでいいや、という人はまさにgoでよいのでは。 goではいやだ、という人むけ。
433 名前:デフォルトの名無しさん [2017/08/02(水) 16:42:18.62 ID:E8GFzbft.net] goとかいうmapもnull安全もないうんこは絶対NG
434 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 17:58:49.69 ID:m0LDca1I.net] goが嫌だと言うなら kotlinという選択肢もある。 これだとアンドロイドアプリももれなく使えるようになるし、 null安全だし。 何よりideが既にある
435 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 18:06:51.08 ID:5BVbLnR+.net] 過疎だからいいけどrustの話しようぜ
436 名前:デフォルトの名無しさん [2017/08/02(水) 18:07:43.92 ID:E8GFzbft.net] kotlinもscalaもjvm言語だからあまりnull安全じゃない
437 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 19:54:07.78 ID:7vYFqN5x.net] rustはno_coreにしてベアメタルでリージョンにメモリ管理やってもらうだけに全振りすればいいよ! え?ヒープ使いたい?rustc_privateでalloc系をだな。 アセンブリもcpu毎にアセンブラ用意するのが面倒くさいからrustのinline asm使おうぜ。 >>404 そのまんま。 cargo checkはZオプション付けてるだけだから「Zオプションは安定してないから注意しろよ」ということ。 >>428 言ってる意味がわからない。
438 名前:351 mailto:sage [2017/08/02(水) 20:02:49.43 ID:5dN3nnfV.net] >>416 unsafeを使わないと任意のアドレスを読み書きできない(=レジスタにアクセス出来ない)と思っていたけど他の手があるのか
439 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 20:28:52.05 ID:xy+LcKRk.net] 本格的にOS無しの世界に入ったことが無いから適当だけど、関数型プログラミングの道具が使える、とか?>Rustのメリット 代数的データ型とかラムダ式orクロージャが簡単に扱えるとか。 趣旨から外れるけど、Cの世界に入れるのと同じような感じでRustの世界に入ることができるのも個人的には良いと思ってる
440 名前:デフォルトの名無しさん [2017/08/02(水) 20:31:53.85 ID:E8GFzbft.net] >>429 javaのライブラリ使える代わりにjavaライブラリはnull安全じゃないよって事
441 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 20:54:36.60 ID:Hth04IJp.net] >>429 >cargo checkはZオプション付けてるだけ 補足するなら、これは非標準のcargo-checkサブコマンドの挙動であって、 標準のcargo checkは--emit metadataを使っているから警告は出ない
442 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 21:09:38.43 ID:FxAsS3hN.net] >>429 >>433 普通に使ってれば表示されないメッセージなんですね cargo checkが出力するエラーや警告などをもう少し調べたいんですけど これってどこに乗ってるんでしょうか? cargoのリポジトリクローンしてから適当なエラーでgrepしてもヒットしないんです
443 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 22:00:58.19 ID:7vYFqN5x.net] >>432 VMじゃなくてライブラリの話ね。 ceylonみたいなjavaとのシームレスな通信を捨ててるJVM言語はどうだろうか? >>434 cargo-checkっていうthaad partyのサブコマンドがあるんだけど、 後にcargo自身に全く同じサブコマンド名でちょっと違うコマンドが追加されたの。 だからcargo-checkの方つかってるはず。 `cargo install --list`してみ。 ttps://github.com/rsolomo/cargo-check
444 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 22:13:46.45 ID:h6wu2BXI.net] 物騒なpartyのサブコマンドだな
445 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 22:28:55.57 ID:Hth04IJp.net] THAAD partyワロタ
446 名前:デフォルトの名無しさん [2017/08/03(木) 00:45:37.29 ID:InlYWDxN.net] >>430 unsafeを使わないとできないってのはその通りだけど > もちろん入力値のチェックは必要になるだろうけど って処理を含めた関数を作ってunsafeな部分を支配下に含めることでunsafeでない処理にするってことが言いたかった 例えるとmallocの戻り値チェックを入れてOption<&mut T>を返す関数を作ってラップすることでunsafeでなくするって感じ これを面倒くさがるとぬるぽに遭遇するがちゃんとラップすればガッが「一切」必要なくなるわけだ でも今度はfreeしてない問題が発生するからスマポ作って・・・と徐々に面倒くさくなってきて > コストとの相談 >>431 ライフタイムとか借用とかの安全機能抜きにしてもパターンマッチとか他の言語機能で見てもRustは魅力的だよな ・・・まずい、mainにunsafe付けてBetter CとしてRustを使う世界もありな気がしてきたぞ
447 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 04:52:30.89 ID:dQPpbAHc.net] Java の参照は、Nullable だから、 Kotlin で扱う場合、すべて、Nullable にすると面倒 そこで、Kotlin では、Platform Type (下の3) と言うものを作った String 変数型に、Null 代入時、 1. String で、実行時に、IllegalStateException 2. String? で、Nullable だからOK 3. 型を省略(String!) で、実行時に、デリファレンスでヌルポ
448 名前:1. は、インスタンスにアクセスする前に、代入時にエラー。 3. は、1よりひどく、インスタンスにアクセスして、ヌルポ [] [ここ壊れてます]
449 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 07:06:29.97 ID:l/KHeBEE.net] Kotlin信者が必死だなw JVM要する時点で組み込み/低レイヤーに向かねーんだよ、土俵が別次元だ馬鹿 Android ARTはJVMじゃない?そのランタイムサイズ、Rustのランタイムサイズの何倍になってるのか分かってんの?
450 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 08:03:17.08 ID:eYqeDR4x.net] スレチ削除申請頼む
451 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 08:29:31.88 ID:hrCRy9t8.net] 組み込みスレ?
452 名前:デフォルトの名無しさん [2017/08/03(木) 08:39:41.14 ID:563u4f2I.net] >>441 いちいちスレチだけでレス削除してくれるほど運営も暇じゃねーよ 板違いのスレも最近は「落ちるまで放置してね」の方針なのに
453 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 10:32:34.73 ID:TRkbUvPZ.net] rust 1.21.0使ってますが英語苦手なので日本語ページ見てます https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/if.html このページの一番最後 「else のない if では、その値は常に () となります」とあるので let x = 0; let y = if x == 1 { 1 }; println!("{}", y); って書いたんですけどbuildしてもエラーになります error[E0317]: if may be missing an else clause ()になりませんどうしてですか?
454 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 10:33:20.99 ID:WxFDmNeE.net] >>440 ちなみにkotlin/native 開発中だからそれでrustと同じ土俵に立てるよ。 llvmの中間コード吐けるようになる。 rustより学習コストは低くて関数型チックな言語構文使ってるから kotlin vs rustが勃発するな。 問題はandroid開発者を取り込めるからユーザー数は圧倒的 IDEも標準が存在する。 という点で色々rustは不利。 rustはwebAssenbryあたりで本領発揮できればいいんだけど。
455 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 10:35:36.32 ID:WxFDmNeE.net] >>444 エラーメッセージ観るとelse節がないって怒ってるね yに代入するんだからelseないと値が不定になるでしょ
456 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 10:39:45.44 ID:WxFDmNeE.net] >>444 ごめんちゃんと読んでなかった fn main() { let x = 5; let y = if x == 5 { () }; println!("{:?}",y) } これだと動くよね。型を() に統一しないとダメなんじゃない
457 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 10:52:53.58 ID:TRkbUvPZ.net] >>447 なるほどそういうことですか 省略しないほうがいいですね ありがとうございました
458 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 16:58:16.30 ID:cu622efE.net] IntelliJ Rustプラグインが、(IDEの)公式プラグイン化した ついでにちょっとおせっかいな表示も始めた 関数呼び出し部分に仮引数名を補完表示とか、省略された型宣言を補完表示とか
459 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 22:02:43.27 ID:l/KHeBEE.net] 有料化しなきゃどうでもいいかな
460 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 22:11:43.17 ID:ztpCIQ/J.net] JetBrainsが開発に参加しているというだけでもそれなりに心強い
461 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 09:17:26.55 ID:plGTqVJg.net] あのプラグインの作者、前にPR出したらクッソ丁寧なダメ出ししてくれた PRコメントの数倍のレスが返ってきてビビったわ 引き続きコミュニティベースで発展するといいのう、MozillaもJetBrainsもあんま要らんことするでないぞ
462 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 11:05:40.90 ID:ZGf6UrbU.net] >>452 個人的には language server protocolをちゃんと
463 名前:用意してくれたほうが幸せ。 vscodeで使いたいんで。 http://qiita.com/atsushieno/items/ce31df9bd88e98eec5c4 https://github.com/rust-lang-nursery/rls [] [ここ壊れてます]
464 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 22:55:37.21 ID:KlM1Xeqg.net] >>444 ,446,447,448 型が一致してないからや。 if式のelse句省略して戻り値の型にunitが推論されるのに thenの方の戻り値の型がunit以外になるからエラーになる。 たぶん、rustc --explain 0317すればクソ丁寧に教えてくれる
465 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 02:43:30.26 ID:WbpcX2VW.net] Windows用のtar.gzを落としてきて適当に解凍 .\rust\binへパスを張って >rustc hello.rs error[E0463]: can't find crate for `std` error: aborting due to previous error(s) > えぇぇー・・・・w .\rustcの中を見てもライブラリらしき物が見あたらないのでどこにいるのかと探したら .\rust-std-i686-pc-windows-msvcの下にいた。.\rustc\libの下に移動したらコンパイルは 通ったがリンカがないと怒り出す 面倒なのでVC++のコマンドプロンプトからパスを張ってようやくコンパイル&リンクに成功 無事に実行出来た というか実行ファイルがかなりでかいな。100KBくらいある。全部込みじゃしゃーないか あと-vや-C link-args=が無視されているように見える
466 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 02:47:41.52 ID:Q+GU1zzP.net] そもそも今日日tar.gzなんてどこから落としてきたんだっていう
467 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 03:11:33.75 ID:WbpcX2VW.net] 他のインストール方法ー→スタンドアロンなインストーラーにビルド済みを固めたtar.gzがある
468 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 07:15:49.71 ID:49wfyY1x.net] 何らかの信念があって、rustupを避けてるわけ?
469 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 16:01:00.22 ID:WbpcX2VW.net] オンラインによるインストールは可能な限り避けるようにしている。あとで環境の再現が必要になった時に詰む可能性がある
470 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 16:18:44.06 ID:CGuOYehU.net] メモリ安全が重視されるのって、ハッキングとかに使われるから?
471 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 16:22:20.12 ID:uZdWE4Go.net] 脆弱性になるからってのもそうだけど、単純にSEGVでプログラムが落ちるのを防ぐためというのもある
472 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 16:31:03.26 ID:CGuOYehU.net] 代わりにunwrapで落ちまくり いや、うそ それ以外のバグだと落ちはしない?
473 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 17:34:15.87 ID:49wfyY1x.net] メモリ安全とミドリ安全って似てるよな
474 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 00:23:03.22 ID:8w1+5d3W.net] >全部込みじゃしゃーないか msvc toolchainでstaticリンクになったっけ?
475 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 03:55:05.27 ID:fFJNwhsI.net] >>464 リンカにどんなコマンドが渡されているのか確認できないので詳細は判らない
476 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 03:55:59.27 ID:fFJNwhsI.net] あ、なんか変だ。訂正 × コマンド ○ オプション
477 名前:デフォルトの名無しさん [2017/08/06(日) 10:24:33.59 ID:gzkOLnwH.net] Rustの日本語書籍出る予定ないのかな?
478 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 17:24:42.71 ID:hteV9R0w.net] >>467 英語で原典的な本が出るから遠からず日本語訳も出るだろ ただし日本語訳の翻訳の質がどうなるかは全く安心できないことは 近年のプログラミング関連の英語書籍の日本語訳を見れば理解できるだろう
479 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 23:17:23.51 ID:5q4qU5gd.net] 書籍は情報が古すぎて当てにならんぞ。 文書化自体あんま力入れてないからソースコード読むのが一番早いよ。
480 名前:デフォルトの名無しさん [2017/08/06(日) 23:38:02.09 ID:Q0UOjaQj.net] 訳のレベルに関係なく出せば売れるからかな 需要が少なすぎて競争にならないから訳の質がいい物が出ない?
481 名前:デフォルトの名無しさん [2017/08/07(月) 04:31:33.89 ID:+587VfNE.net] >>469 どのサイトのソースコード読むのがいいですか?
482 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 04:33:15.84 ID:lxGlucTV.net] >>470 > 需要が少なすぎて競争にならないから訳の質がいい物が出ない? そうじゃない 英語の理工学書の翻訳の質はここ20年ほどの間に明らかに著しく低下した その原因として考えられるのは、訳者が使命感を持たなくなり単に副収入とかの経済的で利己的な目的で翻訳をするようになったことと それ以上に訳者が大衆化したことも大きい(かつてだと理工学書の翻訳は、ほぼ完全にいわゆる一流大学の教授の専権事項だったが今は全く違う) またそういう一流大学教官による訳書であっても、近年は、ゼミで原書を読ませて学生(院生?)たちに素訳を出させて適当につなぎ合わせて 訳書として出版したのでは?と疑われるレベルの訳すら出現しているのは、明らかに近年の訳者のモラルの低下(使命感の欠如)の例だろう 近年の訳の質の低下に関してもう一つ重要なファクターとしては、最近の訳者が英語(特に会話面で)は達者になったのかも知れないが 明らかに昭和後期の訳者たちよりも日本語の文章力が低下していることだ(その結果として訳の日本語文が読むに耐えないレベルに堕している訳書が少なくない)
483 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 07:28:08.80 ID:PGcD2DjA.net] というかそもそも書籍を出す以上利益を見込むわけだけどRustの書籍が出たところで到底コストに見合う利益をあげられるとは思えん
484 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 08:02:25.73 ID:ElcK6Dg+.net] 唐突に小論文もどきが発生していて笑う steveklabnikやcarols10centsは大学の教官ですらないだろうけれどそれは良いのか
485 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 08:15:17.32 ID:rE42Biik.net] 「監訳者」がいるが「訳者」が書いてない本って、やっぱそんなもんだろうね あるいは機械翻訳をちょこっと手直ししただけとか 名前を表に出すって内容に責任を持つってことだから、名前重要よ
486 名前:デフォルトの名無しさん [2017/08/07(月) 08:29:28.94 ID:+587VfNE.net] Rustの入門書サイトなどおすすめありますか?
487 名前: mailto:sage [2017/08/07(月) 08:31:32.26 ID:Y4YBisBB.net] >>472 なにも今にはじまったことじゃない >ゼミで原書を読ませて学生(院生?)たちに素訳を出させて >適当につなぎ合わせて訳書として出版したのでは? プログラミング言語C とてそうやって作られた、といわれている
488 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 08:32:44.78 ID:ONon98mg.net] 典型的な老害で笑える ピアソンの技術書とか今出したら炎上間違いなしってレベルの翻訳もあっただろ Googleのエンジニアですらやばい翻訳とかするのにたかが大学教授如きが完璧に翻訳できる訳がない
489 名前:デフォルトの名無しさん [2017/08/07(月) 12:03:28.98 ID:NP3377Zu.net] >>476 公式
490 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 16:12:50.80 ID:lxGlucTV.net] >>478 > 典型的な老害で笑える > ピアソンの技術書とか今出したら炎上間違いなしってレベルの翻訳もあっただろ 外資系や新興の出版社が出す本は訳書に限らず酷いのは昔から 編集担当者が日本語文のチェックを碌にしないしそういう新興出版社は人脈を持っていないゼロからのスタートだから良い訳者が無かったからね 問題は、近年は、老舗と言える理工系出版社から出されている訳書でも翻訳の質が急激に堕ちて来たことだ その原因は翻訳の大衆化と訳者のモラルや使命感の低下にあると言ってるのだよ > Googleのエンジニアですらやばい翻訳とかするのにたかが大学教授如きが完璧に翻訳できる訳がない 馬鹿ですか? そんな高度で難解な技術書など存在しても極く一握りで、そんな極めて特殊な例
491 名前:取り挙げて反論するなどナンセンス そんなナンセンスで反論だと思ってる君の知性を疑うね そもそもそんな難解な技術書を読んで理解できる人間も一握りだ そんなレベルの人間ならば原書で読めるから翻訳する必要性も希薄 問題は、かつてならば普通の質で翻訳されていた難易度が平凡なレベルの教科書・技術書・学術書ですらまともな日本語訳でないのが量産されるようになったという点 [] [ここ壊れてます]
492 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 17:27:07.42 ID:PfKZEtLc.net] アカデミアを知ってる気取りの学生の臭いがプンプンするけど、そんなことを書き込んでいる暇があったら期末試験の勉強しとけよな
493 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 17:35:11.15 ID:n0QtNiqf.net] >>472 > 英語の理工学書の翻訳の質はここ20年ほどの間に明らかに著しく低下した それ何か根拠があって言ってんの? どうせお前の妄想だろ。 長々と言い訳せんで良いよ、消えろ。
494 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 17:35:27.75 ID:8DeyRC3s.net] 計算機学の正式な教育を受けたことがないからわからないけど,たとえば数学では大学2年までに学ぶべき科目の教科書は翻訳でも日本語教科書でも定番と呼べる本が出揃ってるんだよね そんな中で使命感を持って初学者向けの本を訳したがる人はそうそういないでしょ 技術書界隈でもそんな現象が起こってるじゃないの
495 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 18:08:53.23 ID:Y4YBisBB.net] >>483 解析学と線形代数の定番を教えてください、できればギャップの極度に少ないものを 翻訳じゃなくて、「解析概論」(高木)よりは親切なやつを 是非!
496 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 18:36:14.26 ID:8DeyRC3s.net] 杉浦本と斉藤本じゃあかんの(多変数の議論に飛躍が入るのはしょうがない)
497 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 18:36:16.49 ID:n9zFQLuH.net] >>484 うちの親父の形見が解析概論なんだが
498 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 18:39:57.17 ID:ElcK6Dg+.net] スレチ
499 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 19:45:52.18 ID:8DeyRC3s.net] ごめん
500 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 20:05:48.41 ID:8DHQ/UcZ.net] でもここ20年でネット利用者の情報リテラシーと日本の国際的な技術的地位はかなり落ちたよな
501 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 21:05:17.72 ID:q/Po/zS7.net] 近年は、技術書の日本語翻訳版が出るころには、次のメジャーバージョンがリリースされて買う気を失う傾向
502 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 21:56:28.43 ID:JP8gCgB5.net] ITは元々レベル低かったんじゃない?ハードは強かったけどソフトはそんなに
503 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 23:32:35.06 ID:tGwRq2k1.net] おまえらexa紹介されてる ttps://www.cyberciti.biz/open-source/command-line-hacks/exa-a-modern-replacement-for-ls-written-in-rust-for-linuxunix/
504 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 23:34:52.24 ID:R3k5HOGA.net] lsコマンドに替わるコマンド「exa」とは news.mynavi.jp/news/2017/08/07/203/ exaはRustで開発されたls系コマンド。 サイズが小さく高速に動作し移植性も高いという特徴がある。
505 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 23:58:47.36 ID:LiwmU2BL.net] Rust関係なくてスマネ >>491 全てとは言わないけど分野によっては世界トップクラスだったよ 1.コンピュータアーキテクチャ&オペレーティングシステム Windowsが走るコンピュータアーキテクチャを開発、販売していた数少ない国の一つ そのためにWindowsのカスタマイズも行っていた 2.日本語ワードプロセッサ 3.日本語入力変換システム この二つは語るまでもないよね。ユーザーは積極的に捨てたけど 4.低レベルの実装、解析 かつては日本製のBIOSパッチとか野良BIOSとかがあった。このへんの技術は1とも絡むね
506 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 00:52:12.66 ID:b/ztEhQD.net] どうでもいいけどexaって打ちづらいから普通にlsでええわってなる
507 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 01:39:41.54 ID:Apkyawzp.net] >>495 エイリアスつかえば
508 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 22:30:57.70 ID:0Gdz9Dwg.net] >>482 それ以前から理工学書を読んでいる人間ならば多くが同様の感想を持っているわけだが 読んでない人間は知らんがね 他人の投稿が気に入らず読みたくないならば、お前がこのスレを読まずに消えれば済むこと
509 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 22:33:19.04 ID:tK7llXaf.net] 幅広い理工学書の全てを知り尽くした>>497
510 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 22:39:16.48 ID:B6tVSdcm.net] アカデミックこじらせおじさんかイキリ大学生か
511 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 22:54:17.33 ID:XDy6h+kL.net] A. 20年前と今の理工学書を比べられる、2chのドマイナーな言語スレにいる ->アカデミック関係者の可能性 B. 自分の意見の論拠が薄い、的確なソースを出せない印象論 ->実体験であるなら妥当 C. スレ違いの話を得々と語る、煽りに慣れていない ->コミュニケーションに難あり >>497 が本当に一流大学の教官である可能性は微粒子レベルで存在する が、話の中身は与太話だし、何を言ったかだけを判断するなら塵芥と同じ扱いでよろし
512 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 09:35:51.16 ID:mzNn5sYF.net] >>497 結局「根拠は無い」というレスして恥ずかしくないの?
513 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 20:42:37.62 ID:jJFzyGYq.net] Firefox高速化 www.itmedia.co.jp/news/articles/1708/09/news079.html
514 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 20:56:02.48 ID:yH2dFN1n.net] >>493 FDの作者って亡くなったんだっけ
515 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 22:29:08.98 ID:BGGA/pTO.net] 1つのパッケージをインストールするだけでも時間が何十分とかかる 萎える〜
516 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 23:44:38.45 ID:oO58YE7v.net] Rust 1.19におけるタグ無しのunionなどの追加 https://www.infoq.com/jp/news/2017/08/rust-119-released
517 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 23:50:55.47 ID:AaV7WIeC.net] >>504 環境変数としてCARGO_TARGET_DIRを適当なところに置くと、以前にビルドしたcrateを利用してくれるよ まあバージョンが違ったりしたらやり直しだから気休めにしかならんかもしれんが
518 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 09:16:01.74 ID:hSTXQfAm.net] ライフタイムがよく分からんから、ライフタイム定義なしで動くプログラムは作れるようになったんだけど、 ここから必要に応じて参照使いまくりでライフタイムしまくりが出来るようになるにはどうしたらいいでしょうか?
519 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 11:35:07.02 ID:+tFBM5sG.net] >>507 個人的な経験談だけど、ライフタイムが複雑で分かりにくいときはデザインから見直した方が良い場合が多い 単にコピーされるのを嫌って参照にすると駄目で、元の値の完全な従属物のときだけ参照を使うと大抵はうまくいく メンバ変数間の参照はキツいので手を出さない、グラフとか所有権が複雑なのも自分じゃ作らずにライブラリにしておく、とか
520 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 13:04:49.06 ID:qDPlaybB.net] rustで検索してもほとんどゲームの話題しか検索に引っかからなくて草 rustの日本コミュニティーないの?
521 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 13:14:22.08 ID:v3fv+3Jb.net] ここじゃよ
522 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 13:29:36.14 ID:jhaqJJbw.net] >>508 え、同じstruct内でメンバ変数間の参照は出来ないでしょ?
523 名前:デフォルトの名無しさん [2017/08/10(木) 14:00:03.18 ID:g9gtECZC.net] >>509 slackがある 登録済の人 -> https://rust-jp.slack.com 未登録の人 -> https://rust-jp.herokuapp.com/ 👀 Rock54: Caution(BBR-MD5:b95868ef2c0ed5e765a4d10ada4cf289)
524 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 18:33:30.12 ID:DpOw+Ywo.net] おれもslack見つけるのすごく時間かかった
525 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 19:56:47.71 ID:oX316LZB.net] >>511 unsafeなコードでゴニョゴニョしないと無理だね RocketのFairingsなんかがゴニョゴニョしているものの例 https://github.com/SergioBenitez/Rocket/blob/9c9740f/lib/src/fairing/fairings.rs#L23-L38
526 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 20:06:16.94 ID:5YNarUir.net] Arcでもダメなんだっけ?使う機会がないからTutorialで読んだきり見たことないけど
527 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 22:57:52.57 ID:Ib9pl7ao.net] >>507 lifetimeはextentとregionをごちゃまぜにした語だから lifetimeに言及してる部分は実際にはextentの話かregionの話に分かれる。 だからextentとregionを理解すればいいよ。 特にscopeとextentの区別がついてないやつが非常に多いからそこ気をつける。
528 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 23:40:15.73 ID:+tFBM5sG.net] 何かextentとregionを説明したものってある?
529 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 00:54:12.71 ID:XZrwY8EL.net] >>517 extentはscopeとよく一緒に説明されるからそこら辺で検索。 言語によってはextentの事をlifetimeと呼ぶから そういう言語のlifetimeを詳しく解説してる本とか当たってもいい。 ただし、rustのextentとregionを混同したlifetimeの事と extentをlifetimeと呼ぶ文化におけるlifetimeの区別は 事前にちゃんと付けておいたほうがいいね。 rustのlifetimeは無駄にややこしくしてるから頑張って。 regionの説明はほとんど見かけないから近道は論文読む。 実装ならRTSJとCycloneくらいしかない。 region理解するならzone/arena(両方同じもの)とリージョン多相とリージョン推論も理解した方がいい。 あとrust固有の話だとrustのリージョン多相は部分多相も備えてる。
530 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 01:38:14.07 ID:KiXisjXW.net] 無駄に話を複雑にした挙句論文を読めときたか、少し前にいたイキリ大学生かよ 普通に公式のThe Rust Programming Languageを読んで現行Stringを使ってるなら&strにして組み直して見たら? structのメンバに参照があると否応でも意識/理解せざるを得ないと思うぞ
531 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 05:26:24.27 ID:oTwda99v.net] >>519 いざ言われてみるとstructで参照を持つのってどんなときか思いつかんのだけど
532 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 07:59:32.16 ID:KiXisjXW.net] じゃあまずlifetimeについて考える前に、参照のメリット/デメリットについて考えような 公式サイトのドキュメント読んでこい
533 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 09:42:12.68 ID:oTwda99v.net] c++だと参照保持すると生存期間管理ないからあぶないからやらない スマートポインタ使う そのへんの感覺の違いがまだなれない
534 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 13:31:10.83 ID:wKLRpp+C.net] impl Traitがstableに入ったらどうなるか分からないけど、MapとかFilterとかがstructに参照+独自データって形になってるよ あとはCharIndicesとか。実際のソースはちょいと違うけど元のデータへの参照+と現在位置っていう形になってる
535 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 23:09:32.05 ID:wLCu2iAZ.net] 昨日Slackに参加した人たちはお前らって認識で合ってる?
536 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 23:41:41.62 ID:lyr4XUnD.net] ようはfat pointerでしょ
537 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 12:16:25.41 ID:IzeoJwWv.net] コンパイル済みのバイナリパッケージを公開してほしいけどそういうのは実現可能ではない?
538 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 18:35:23.01 ID:dKEWL6WP.net] 例えばripgrepのコンパイル済みのバイナリパッケージ ttps://github.com/BurntSushi/ripgrep/releases/tag/0.5.2 リリースビルドしたバイナリをzipなりでパッケージングすれば良いんでね
539 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 21:37:32.89 ID:YDSzcZF8.net] Pathがすげー使いづらいんだけどなんでなの
540 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 22:36:26.03 ID:4PGg+vlK.net] >>528 具体的にどのあたりが使いづらいと思っているの?
541 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 22:57:47.92 ID:Lzx+EbMy.net] >>527 cargoにそんな感じのサブコマンドあった気がする
542 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 04:17:55.12 ID:oa7ekDLN.net] PathはPath::new(&str)が参照を返すから使いづらい(参照を使いこなせない) PathBuf使えば楽になったよ!
543 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 08:43:10.09 ID:f+gGM+v+.net] >>529 返り値で返せないとか PathBufすると変換いるしめんどい 引数の文字列のライフタイムで怒られる とか
544 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 13:14:25.96 ID:3acTHEGf.net] >>532 >返り値で返せないとか >引数の文字列のライフタイムで怒られる fn file_stem<'a, P: AsRef<Path>+?Sized>(path: &'a P) -> Option<&'a OsStr> { let path = path.as_ref(); path.file_stem() } これじゃダメ? >PathBufすると変換いるしめんどい to_ownedやintoするのもめんどくさけりゃ、もう死んでしまえ
545 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 13:51:20.44 ID:TkYKFb/H.net] こんな使いづらさでしょ fn path<'a>(name: &str, ext: &str) -> &'a Path { Path::new(&format!("{}.{}", name, ext)) // error[E0597]: borrowed value does not live long enough } まぁこれも死んでしまえ事例ではあるが 別所にOsStrの所有権(ライフタイム)がある場合に参照だけで済ますためのPathなので 動的に生成したOsStrでPath(参照)だけを返せると思うなよバーカというね
546 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 13:56:05.57 ID:LyaOwRfj.net] >>533 いきなりドラえもんになるのやめろ
547 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 16:54:45.71 ID:4uuls5D8.net] impl Traitっていつstableはいるんだっけ?
548 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 22:34:46.55 ID:3acTHEGf.net] >>536 特に時期は決まってないはず 少なくとも次のstableではない
549 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 22:46:00.09 ID:r6u293xs.net] owned valueとborrowed valueの区別がついてないだけじゃん
550 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 23:14:52.73 ID:3acTHEGf.net] まあ、Sizedと!Sized (DST)の区別がつきづらいってのもあるとは思う strとString然り、[T]とVec<T>然り、OsStrとOsString、トレイトオブジェクト、そしてPathとPathBuf……
551 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 01:43:35.30 ID:tyQzDLaM.net] アマグラマの書き散らした名前空間みたいできついな
552 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 07:06:13.75 ID:HJwH3qkh.net] >>538-539 それらが区別はついても その上でライフタイムを理解してないと使いづらいという話じゃないの >>534 なんかはPathがborrowed valueで!Sizedなのは分かった それはそれとしてPathのまま返すにはどうしたらいいの?って ライフタイムをきちんと理解してない初学者は躓くわけじゃん
553 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 09:35:01.13 ID:59zJ3Di9.net] >>541 >Pathのまま返すにはどうしたらいいの? ライフタイムとか関係なく、!Sizedな型はそのまま返すなんてことはできない コンパイルタイムにサイズが分からないからランタイムでサイズ情報を持つfat pointer経由でしか扱えない (https://doc.rust-lang.org/book/first-edition/unsized-types.html) 所有権を持った値として返したいのならそのownedなバージョン(今回はPathBuf)かボックス化された状態(PathBuf::into_boxed_pathで得たBox<Path>)を使うしかない ああ、>>532 の「返り値で返せないとか」の意味がようやく分かった。確かにその通りだ。別の型で返す必要がある
554 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 09:54:46.27 ID:HJwH3qkh.net] ええぇ、今までPathが返り値で返せないの意味を分かってなかったのかw !Sizedな型は+Sizedとかで型サイズを固定させて返すとか頑張るんでしょ、Pathは出来なかった気がするけど PathBufはDeref type Pathがあるからまぁなんとか str, String等の命名規則がStr, StrBufじゃないのは気に入らん、みたいなのは分からいでもない なんか歴史的背景があるんだろうけど、考えるのが面倒でそのまま受け入れてる
555 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 09:56:58.67 ID:3NSMgreF.net] 習いたての頃に[u8]を引数に取ろうとして躓きまくったのを思い出す そういやこれって何でわざわざコンパイラー組み込みでファットポインターを定義してるんだ? struct Path<'a> { start: *mut (), end: *mut (), marker: PhantomData<&'a PathBuf> }じゃダメなのか?
556 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 10:30:03.78 ID:59zJ3Di9.net] >>544 それだとimpl AsRef<Path> for PathBufとかが出来ない
557 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 10:53:05.45 ID:fyv2iRf4.net] PathがSizedじゃないってのが初学者的にめんくらったわ strと同じだと思えば理解できた
558 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 10:54:47.32 ID:fyv2iRf4.net] >>537 nightlyって1.21って出るけどそこに入るわけじゃないのね
559 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 15:20:15.52 ID:xd4YqYEd.net] >>542 いかにもRust FAQに載ってそうな話題だと思ったが、ちらっと見た感じ、載ってないな 和訳も1割ぐらいしか進んでないし
560 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 01:22:49.60 ID:Kx+225Ge.net] >>541 >>542 の言うとおりそこはライフタイム関係ないから デフォルトがムーブセマンティックスで、 借用はsubstructural type systemに守られてるってこと覚えたらライフタイム知らなくても分かる。 >>547 特に決まってないよ。 nightlyの途中でマージされたのがいきなり次のstableに入ることもあるし。
561 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 05:20:52.55 ID:qX6sO+hu.net] &Pathを関数戻り値で返せないのにライフタイム関係ないって子たちはエラー内容見えないのか // error[E0597]: borrowed value does not live long enough サマリーだけでlifetime関係ないって思い込んでるならE0597の詳細見て理解しような https://doc.rust-lang.org/error-index.html
562 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 05:38:14.01 ID:tN8D0FqC.net] ちょっと聞きたいんだけどrustのマクロって裏でどういうコードが生成れてるか分かる機能ってあります? Cのプリプロセッサなら生成コードが出力できるけど、、、
563 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 09:18:04.23 ID:cM0t4sQL.net] Webにいるプログラマって、マサカリとかに代表されるように人格が狂ってる人多いよね。正しければ正義的な。 2ちゃんはさらにひどいけど、そうじゃなくても。 実社会でプログラマの地位が認められてないからかなぁ。
564 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 09:27:06.48 ID:O7/Y4aw2.net] >>550 &PathじゃなくてPathを返すって話だよ Path: !Sizedだから参照を経由しない形では返せない(fn() -> Pathと書けない)というお話ね >error[E0277]: the trait bound `[u8]: std::marker::Sized` is not satisfied in `std::path::Path` こういう流れを見ると本当にDSTは理解されづらいんだなあと思う >>551 Nightlyで、rustc -Z unstable-options --pretty=expanded foo.rs これのラッパとしてcargo-expandというものもある https://github.com/dtolnay/cargo-expand
565 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 09:32:50.69 ID:qX6sO+hu.net] Path:newが&Pathを返すというstdライブラリ仕様を言及してたのかよwww そりゃ失礼、そんな所よりそれをどうやって使うかを話してるつもりだったわ
566 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 17:22:31.52 ID:bUHuOZJE.net] newがPathを返すと思ってたわ あはは
567 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 17:26:22.04 ID:L9Yq17PV.net] あはは
568 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 18:11:07.59 ID:qRVErxIb.net] あはははは
569 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 18:12:13.59 ID:wgr8KXHg.net] もしかして他にもnewで&返すのあるの?
570 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 18:29:55.70 ID:MDS+g102.net] ワロス
571 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 18:34:48.29 ID:O7/Y4aw2.net] >>558 標準ライブラリのパブリックな型ではOsStrくらいじゃないかな from系の関数も含むのなら、std::slice::from_raw_partsとかstd::str::from_utf8とかもある 標準ライブラリ外のクレートでもstrに対するラッパとかでそういうのがあった気がする
572 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 01:13:42.55 ID:lhJRoj0R.net] >>554 オレも値受け取った後の話だと思ってたわ
573 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 01:18:30.66 ID:lhJRoj0R.net] ごめん言い忘れたぜ。 >> 558 fn new<S: AsRef<T> + ?Sized>(s: &S) -> &Self に一般化出来るの全部。transmuteしてるだけだもん。
574 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 01:35:45.19 ID:Vj5dC5z1.net] >>562 これ系の実装がやたら低レベルなのってどうにかならんもんなのかねえ……
575 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 03:04:04.19 ID:Tcbyhi06.net] とは言え、Pathみたいにnewtypeパターンでnewtypeの元の型の参照からnewtypeの型の参照を得るケースなんてそう多くないからな(というかDSTくらいでしかやらない) transmuteもやむなしだろう
576 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 04:03:28.36 ID:1RQ5dDrL.net] newなんて普通過ぎる名前が悪い sliceよろしくfromにしておけばよかったんだ
577 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 07:12:51.51 ID:Ip1XZB1d.net] >>551 https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/macros.html#マクロをデバッグする > マクロの展開結果を見るには、 rustc --pretty expanded を実行して下さい。
578 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 10:55:53.36 ID:Agtz0DvI.net] IntelliJ Rust Pluginのエディタが型表示をヒントとして表示するようになってクッソウゼェw 一瞬便利かなと思ったけどやり過ぎだと思ってオフにしたった futuresでチェーンしてると型名が長すぎて実態のコードが画面外に追いやられてたわ 変数名にフォーカスしたら型名表示くらいのFRやPRは出てないものかしら
579 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 11:05:25.77 ID:s5nUB7nh.net] >>567 その機能を持ってきたJavaだと型名が短いからいいんだけどね
580 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 11:50:59.59 ID:11a+64I1.net] みんな何でRust書いてるの?IntelliJ派?
581 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 17:55:39.36 ID:5vWhS1NV.net] emacs
582 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 17:56:12.79 ID:Vj5dC5z1.net] Vim一択
583 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 17:58:42.50 ID:5vWhS1NV.net] Path(PathBuff)に拡張子を追加するにはどしたらいいすか f.txtをf.txt.zipにするてきな。
584 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 18:27:36.87 ID:ObQbU6V8.net] ggrksなので雑に答えてみる let path = Path::new("f.txt"); let new_name = format!("{}.{}", path.to_str().unwrap(), "zip"); let new_path = Path::new(&new_name); print!("{:?}", new_path); これ以上雑な実装はねーだろ(チラッチラッ
585 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 18:47:37.19 ID:U6ziTncO.net] やっぱそーなっちゃうんですねー。 ありがとうございました。 さすがにこれ以上エレガントなのはないですね
586 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 18:48:57.93 ID:Vj5dC5z1.net] 元から&mut Stringや&mut OsStringを持っていてそれを&Pathに変換するような場面なら、素直にStringやOsStringの時点でpushとかで加工した方が手軽だと思う OwnedなPathBufしか持っていないのなら一旦OsStringに変換してから拡張子を足してPathBufに戻す &Pathや&strしか持っていないのなら、そもそもその状態では書き換えようがないからto_ownedする &mut PathBufしか持っていないのなら、多分設計が良くない。&mut OsStringを受け取れるようにできないか検討しよう
587 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 19:03:14.68 ID:PvRs7uXf.net] エディタわりとバラバラなのな 俺はVimだけど何となく気になった
588 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 19:22:40.51 ID:ObQbU6V8.net] 来るかなぁと思ってたが、案の定エレガントじゃない回答(>>575 )がきたぞw 卓上で語るのが好きでコードに落とせない子なんだろうなぁ >>575 はそのバリエーションで実装に落としてあげるとエレガントな回答になるからちょっとやってみ?
589 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 19:42:34.81 ID:Vj5dC5z1.net] >>577 1番目 fn f(path: &mut OsString) -> &Path { path.push(".zip"); Path::new(path) } let mut path = "f.txt".into(); assert_eq!(Some("f.txt.zip"), f(&mut path).to_str()); 2番目(assertionは省略) fn g(path: PathBuf) -> PathBuf { let mut path: OsString = path.into(); path.push(".zip"); path.into() } 3番目 fn h(path: &Path) -> PathBuf { let mut path: OsString = path.into(); path.push(".zip"); path.into() } ついでに4番目(実際に使うべきでないが) fn i(path: &mut PathBuf) { unsafe { (*(path as *mut _ as *mut OsString)).push(".zip") }; }
590 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 19:56:17.83 ID:YfsrWVwz.net] めちゃくちゃエレガントになったな(白目)
591 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 20:11:43.78 ID:ObQbU6V8.net] 1〜3がすごく無駄なバリエーションでワロタ まとめてこれでいいじゃん, 分けて挙げた意味あるのかいな let path = f(PathBuf::from("f.txt")); let path = f(Path::new("f.txt")); let path = f(OsString::from("f.txt")); fn f<P: AsRef<Path>>(path: P) -> PathBuf { let mut path: OsString = path.as_ref().into(); path.push(".zip"); path.into() }
592 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 20:16:19.25 ID:eiUsQzcr.net] cloneする奴としない奴を同列に語るのはどうなんだって感じだがな
593 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 20:18:00.24 ID:ObQbU6V8.net] 4を頑張れば>>573 を超える雑な実装にできる可能性がありそうだけど無理かなぁ まぁ無理か・・・
594 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 20:27:22.87 ID:eiUsQzcr.net] つまり、雑さ選手権であると言う事を見落とした事が>>575 の敗因か()
595 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 20:36:20.89 ID:8AGyDDIv.net] PathBuf::pushじゃいかんのか let buf = path.to_parh_buf(); buf.push(".zip"); buf.as_ref() 一番良いのはPathの元になったOwnedな型にpushすることだと思うが
596 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 20:36:47.76 ID:8AGyDDIv.net] let mut にするの忘れた
597 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 20:38:34.55 ID:Vj5dC5z1.net] let mut buf: PathBuf = "f.txt".into(); buf.push(".zip"); println!("{:?}", buf); // => "f.txt/.zip"
598 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 20:38:39.16 ID:ObQbU6V8.net] >>581 関数f内でのPath/PathBufのメモリ確保処理に差はないから必要なら後から
599 名前:as_pathでもしたらいいんじゃね むしろas_refやintoのオーバーヘッドを気にすべきかのう, 100万回くらいループしたら1秒くらいの差が出るかも? [] [ここ壊れてます]
600 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 20:39:36.49 ID:8AGyDDIv.net] 失礼、PathBuf.pushだと/がついてしまうのか
601 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 20:44:06.60 ID:kNGkTZBw.net] だれも>>550 に肝心なこと言ってやらないのな。 >>550 関数が&Path返すだけじゃE0597はでねぇのよ。たとえば>>534 のは >fn path<'a>(name: &str, ext: &str) -> &'a Path { >Path::new(&format!("{}.{}", name, ext)) >} &format!("{}.{}", name, ext) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ この中でnameとextをdropするからE0597出るんだよ。 まあ、罠だけど。ただの面倒くさいっていう見本みたいだし。 借用を関数の中で結合して返すってのが潜在的に危険だから やり様は色々あるけど↓が一番簡単。 ttps://play.rust-lang.org/?gist=e4937a92f292952a620eaa7bffa51c21&version=stable >>563 無理、rustはこういう型シノニムを構造体でラップしたfat pointerとして定義するからtransmuteは必要になる。 こういうnewtypeがやりたいのはunsafe消すこと。 名前からtransmuteしてるようには見えないから名前が悪いのよ。 >>565 from/intoは使い方決まってる
602 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 20:45:56.00 ID:eiUsQzcr.net] >>587 Path::newやas_ref、intoは単に型システム上の操作であってnoopなのでは(検証してない) だってPathやらPathBufやらはOsStrやOsStringに対する単なるnewtypeでしょ
603 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 20:54:34.33 ID:8AGyDDIv.net] let mut buf = PathBuf::from("hoge.txt"); let mut ext = buf.extension().map(OsString::from).unwap_or(OsString::new); ext.push(".zip"); buf.set_extension(&ext);
604 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 21:03:54.32 ID:8AGyDDIv.net] >>590 Path::into::<PathBuf>はstr::into::<String>と同じでメモリアロケーション走るはず as_refはほぼnoop
605 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 21:07:58.66 ID:ObQbU6V8.net] fn f<T: Trait>(t: T) のトレイトによる分岐はnoopだけど、as_ref, intoはnoopとは限らんよねぇ impl AsRef, Intoの実装でゴチャゴチャ処理するモノもあるだろうし Path, PathBufに限ってはinnerを返すだけっぽいからコンパイラによる最適化でnoopになるかな 2,3回前のリリースでもコンパイラ最適化を抜本見直ししてたし、どうなってるかワカラン(自分も検証する気ない)
606 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 21:51:24.68 ID:8AGyDDIv.net] AsRefはcheapな型変換を実装するためのtraitだし、as_refは常にほぼnoopだと言って良いと思う https://doc.rust-lang.org/std/convert/trait.AsRef.html
607 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 22:57:30.93 ID:Agtz0DvI.net] 雑に拡張子生成部のワンライナーを目指した(改行がないとは言っていない let new_ext = ".zip"; let mut buf = PathBuf::from("hoge.txt"); let ext = buf.extension() .map(OsString::from).map(|mut ext| {ext.push(new_ext); ext}) .unwrap_or(new_ext.into()); buf.set_extension(&ext);
608 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 18:40:58.78 ID:8HfS9wXv.net] std::path::Componentsのimpl AsRef<Path>みたいな地雷もいるけどな! > as_refがnoop 地雷を踏み抜かないように使いたい所存
609 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 18:00:28.47 ID:XVXUXs+1.net] メンバ変数の参照を返すイテレータモドキ https://play.rust-lang.org/?gist=42ce623d69717a8acdc7736d6d624f60 これに Iterator トレイトを実装させたいのだが、関連型 Item の定義が上手く行かず困っている。 関連型について type Item = <&T>; とするとライフタイムが必要だと出る。 しかし impl<'a, T> Iterator for Foo<T> { type Item = Option<&'a T>; ... とか PhantomData 使ったりしてみた https://play.rust-lang.org/?gist=5b127531f2b93a1a9a9143de86ad2340 けど通らない。 どうすれば良いのだろう?
610 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 18:05:55.69 ID:XVXUXs+1.net] ミス。 > type Item = Option の Option<> は要りません。
611 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 18:07:34.29 ID:LVQKp7rQ.net] >>597 impl<'a, T> Iterator for &'a Fooじゃダメな理由とかある?
612 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 18:17:10.82 ID:XVXUXs+1.net] impl<'a,T> Iterator for &'a Foo<T> { type Item = &'a T; fn next(&mut self) -> Option<&T> { Some(&self.x) } } これはこれで error[E0495]: cannot infer an appropriate lifetime for lifetime parameter in generic type due to conflicting requirements エラーが出ます。
613 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 18:20:10.90 ID:LVQKp7rQ.net] >>600 nextの戻り値のlifetimeが不足している Option<&'a T>にしなくちゃ
614 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 18:35:09.68 ID:XVXUXs+1.net] >>601 おお、出来ました! ありがとうございます。 a.next() ではなく (&a).next() となってしまうのが心残りです。 関連型 Item のライフタイム問題が無ければ素のコードで行けるのに、 何故こんなことになってしまうのか……
615 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 19:24:37.05 ID:LVQKp7rQ.net] >>602 Vecとかみたいに、&'a Foo<T>をラップするstruct Iter<'a, T>とfn iter(&self) -> Iter<'a, T>を作った方がエルゴノミクス的に良さそうではある >>597 のコードで動かないのは、Iterator::nextのレシーバのライフタイムが匿名だからself.xが後で書き換えられるのを防げないことによるものだろう Iteratorトレイトの仕様上、仕方がない
616 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 19:31:38.24 ID:zUkt3uOb.net] ていうかあんまり本質的な問題ではないけどtakeを使うべき場面だな
617 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 23:23:26.21 ID:68PBtc02.net] Rustの2017年ロードマップの進捗状況 https://www.infoq.com/jp/news/2017/08/rust-2017-roadmap-six-months
618 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 00:07:19.34 ID:gC1uMiLY.net] >>592-594 変換系の命名規則はコストで決まってる。 ttps://rust-lang-nursery.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv ただまだ質が悪いから準拠してこうぜ!ってのが2017のロードマップ。
619 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 04:06:47.11 ID:eOOMhS38.net] 何で皆さんそんなにコピーがお嫌いなんですか
620 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 08:31:32.98 ID:BpKw1nHe.net] Copyは良いがCloneは避けたい Cloneどんどんやって良いようなプログラムならrustで書かなくても良い
621 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 10:50:48.03 ID:5Hm4My/o.net] >>603 > Vecとかみたいに、&'a Foo<T>をラップするstruct Iter<'a, T>とfn iter(&self) -> Iter<'a, T>を作った方がエルゴノミクス的に良さそうではある Slice のコードを参考にしてみた結果、Some(&v) じゃなくて Some(&*ptr) という unsafe な手法ですが、こんな感じで上手く行きました。 https://play.rust-lang.org/?gist=639045def9c07026e8b6b0267a9dae98 ありがとうございました。
622 名前:デフォルトの名無しさん [2017/08/19(土) 10:56:56.32 ID:i5Fk1Iv8.net] copyとcloneの違いって?
623 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 14:19:36.24 ID:zLcrLAmh.net] error-chainのまともなサンプルがないんだけど、みんな使ってないのかな
624 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 14:23:54.00 ID:FnHzgZW7.net] crates.ioのreverse dependenciesが10ページを超えているようなcrateを「みんな使ってない」はずがない GitHubのexamplesでなんやかんや事足りるからなあ
625 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 14:28:59.69 ID:IJZoKA+S.net] 「Notepad++」v7.5が公開、“LaTeX”や“Rust”、“Erlang”など19言語をサポート forest.watch.impress.co.jp/docs/news/107
626 名前:6002.html [] [ここ壊れてます]
627 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 15:21:50.70 ID:sXEKiJ8x.net] error-chainてメインでしか使えない?
628 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 15:24:47.15 ID:sXEKiJ8x.net] 日本語の記事もほぼないし
629 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 15:47:44.15 ID:nyFhS1vK.net] テキストエディタも高機能な奴は起動が遅かったり動作が重い印象がある
630 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 16:40:03.65 ID:pL/zMRBl.net] >>611 error-chain、なんか使いにくそうと勝手に思い込んでる
631 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 16:53:30.74 ID:FnHzgZW7.net] >>615 むしろ、Rust界隈でまともな日本語記事とやらがどれだけあるのやら……
632 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 23:55:33.96 ID:nyFhS1vK.net] >>613 Notepad++ってちょっと重い。SakuraEditorより重いと思う。あとSDIで使えなかった気がする
633 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 00:02:30.31 ID:oGIfVBlS.net] 直受けの50万 客:いつまでもうちにいていいよ 3次受けの50万(客は70万払ってる) 客:短期延長していい? 5次受けの50万(客は110万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ 長時間労働 高稼働 高スキル要求が多い 零細フリーランスサイトは5次受けから誰もできない難易度の高い仕事 余り物の仕事を紹介してくる。40万円代でやってくれと これならJIETから3次でいったほうがいいな 446非決定性名無しさん2017/08/02(水) 22:12:48.95 JIETに毎月5千円払えば3次から入場できるだろ? 高額をうたうフリーランスのサイトはだいたい5次から45万円 JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした 高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした 473非決定性名無しさん2017/08/03(木) 15:21:30.71 JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる 自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の 間でやらしている。 372仕様書無しさん2017/08/11(金) 10:31:43.41 フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。 高額に見せているけど実際は50万前後 JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。 ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト 自称エージェントはJIETから流れてくる案件を転売してるだけだった。 JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
634 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 15:00:56.50 ID:pZQ2byHx.net] 標準的なステーメントや型、メソッドなどがずらずら並んだ資料とかないのかな エディタ用に定義ファイルを作りたいのだがLearning的なページだと全部載っていなくて・・・
635 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 16:16:49.80 ID:T53roUwE.net] >>621 https://github.com/rust-lang/rust/tree/master/src/libstd
636 名前:デフォルトの名無しさん [2017/08/20(日) 21:48:27.38 ID:tw1yQ9/1.net] いくつか↓のコードについて質問させてください。 https://play.rust-lang.org/?gist=b2fe59eb7aee706b6acb67bb9709967f&version=stable 1. PartialEqが実装されていないというエラーが出てしまうのですがどう対応したら良いのでしょうか? 試しに #[derive(PartialEq)] pub trait Serialize { とした
637 名前:ところerror: `derive` may only be applied to structs, enums and unionsというエラーが出てしまいました。traitにPartialEqを持たせることはできないのでしょうか? 2. error[E0277]: the trait bound `std::vec::Vec<&Serialize>: std::iter::FromIterator<Value<'_>>` is not satisfiedというエラーですが、これはどのようなコードにすれば良いのでしょうか?解決方法が全く思い浮かびませんでした。 ちなみに、enumでArray(Vec<Value>)ではなくArray(Vec<&'a Serialize>)となっている理由は外から型?を追加したいためです。 よろしくお願い致します。 [] [ここ壊れてます]
638 名前:623 [2017/08/20(日) 22:15:56.31 ID:tw1yQ9/1.net] すみません、少し修正したものをアップしました。よろしくお願い致します。 https://play.rust-lang.org/?gist=e29af50f281802f700c0bdf8d676da54&version=stable
639 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 22:56:17.35 ID:JGkv/tSR.net] トレイトと型、ライフタイムパラメータと型パラメータの区別が付いてないような、 pub enum Value<'a> { Nil, Array(Vec<&'a Serialize>), } これとか、書くなら pub enum Value<'a, T> where T: 'a + Serialize, { Nil, Array(Vec<&'a T>), } こうでは? > impl<'a> Serialize for Value<'a> ...
640 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 23:13:22.65 ID:T53roUwE.net] 一応impl<'a> PartialEq for &'a Serializeはできる クソの役にも立たないからやるべきでないが
641 名前:623 [2017/08/21(月) 01:00:32.98 ID:FwjdF0gP.net] >>625 ありがとうございます! 頂いたpub enum Value<'a, T> where T: 'a + Serialize, {を入れてみたところ以下のようなエラーになりました error[E0243]: wrong number of type arguments: expected 1, found 0 --> src/value/serialize.rs:10:24 | 10 | impl<'a> Serialize for Value<'a> { | ^^^^^^^^^ expected 1 type argument この場合Serializeを実装した型を追加で指定しないといけないと思うのですが、例えば struct UUID { uuid: u128, } impl Serialize for UUID { } こんな感じの型をライブラリ使用者が外部から追加しようとした場合、教えていただいた書き方だとどのように指定すれば実現できるのでしょうか? あと最後の…(省略されてる?)が気になります… >>626 そんな書き方もできるんですね!参考になります!
642 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 01:35:15.12 ID:bqQguu/k.net] >error[E0243]: wrong number of type arguments: expected 1, found 0 この場合、impl<'a, T> Serialize for Value<'a, T>としなければならない。というかエラーメッセージが言っていることそのもの ところで、Value::Arrayには複数種類の型の値を入れることを想定している? だとしたら>>625 のような型パラメータによる手法は適さないと思う 実現したい事が分からないから具体的な提案はできないけれど、とりあえずArrayのなかに&SerializeやT: Serializeを持たせる以外の方針が必要だと思う 例えば、serde_json::ValueだとArrayの中にT: Serializeでなく、Valueを入れ子に持っている
643 名前:623 [2017/08/21(月) 02:32:19.49 ID:FwjdF0gP.net] >>628 > ところで、Value::Arrayには複数種類の型の値を入れることを想定している? はい、いろんな型を入れたいです。 今現在↓みたいになっていて(コンパイルできない)改行が多くて書き込みできなかったので改行を減らしてあります。 pub enum Value<'a> { Nil, Bool(bool), Int8(i8), Int16(i16), Int32(i32), Int64(i64), UInt8(u8), UInt16(u16), UInt32(u32), UInt64(u64), Float32(f32), Float64(f64), Binary(Vec<u8>), String(String), Array(Vec<&'a Serialize>), Map(HashMap<String, &'a Serialize>), } これをライブラリとして公開して、そのライブラリの使用者が struct UUID { uuid: u128, } impl Serialize for UUID { fn serialize(&self) -> Vec<u8> { unimplemented!() } } こんな感じにSerializeをUUIDに実装すればArray(Vec<&'a Serialize>)の中に入れられるのではないかと思い実装しました(だめだったのですが…) serde_jsonも参考にしたのですがArrayの中にValueを入れてしまうとライブラリの使用者が型を追加できないのではと思って上の感じにしました。
644 名前: 何かいい方法はないのでしょうか? [] [ここ壊れてます]
645 名前:623 [2017/08/21(月) 02:40:57.36 ID:FwjdF0gP.net] https://github.com/3Hren/msgpack-rust/blob/master/rmpv/src/lib.rs#L416 このライブラリだとValueの中にExtを作ってその中にシリアライズ済みのデータを入れてるみたいですね。 確かにこれならいけそうですが、Valueの中にシリアライズ済みのデータを入れるのがなんだかスッキリしないです… これ以外には方法はないのでしょうか?
646 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 05:08:14.26 ID:G0wb4QJd.net] (ageるなウザい)
647 名前:623 mailto:sage [2017/08/21(月) 15:33:43.28 ID:3Zba4J1M.net] >>631 すみません、sageのこと忘れてました…
648 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 16:25:46.95 ID:oGU2m9lq.net] rustの使用者は型をガチガチに固めて型安全であることを至上としてる風があるから 利用者が自由に型を追加できることの方にスッキリしない印象を持つのではなかろうか 例えば、hyperのHTTP Headerとかね それでも尚そうしたいのであればrmpvなやり方は正しいんじゃないのかね
649 名前:623 mailto:sage [2017/08/21(月) 21:07:50.83 ID:3Zba4J1M.net] >>633 なるほど rmpv方式でやってみようと思います!
650 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 21:48:43.99 ID:rYDUfKH7.net] ライブラリを作る側はゆるゆるにする、使う側はギチギチにする、だったかな
651 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 02:48:14.20 ID:womi0ii/.net] 何の言語における誰の格言だい? Rustライブラリの話じゃないよな, Rustはno_std + unsafeでもしないと作る時すらギチギチだものな
652 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 09:17:41.34 ID:C9KUE8jE.net] https://doc.rust-lang.org/src/core/iter/mod.rs.html#839 default とかいう謎のキーワードがあるけど、これ何だ?
653 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 09:30:00.19 ID:DDLonIhk.net] >>637 Specialize可能な実装を表す修飾語 https://github.com/rust-lang/rfcs/blob/master/text/1210-impl-specialization.md
654 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 09:35:30.79 ID:deDFrfsy.net] rustconfのまとめ誰かたのむ
655 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 09:41:20.78 ID:C9KUE8jE.net] >>638 ありがとう。 本家ソース読んでると、ドキュメント化されてない文法とか現れて時々困惑する。
656 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 23:09:44.08 ID:SJLsCwn3.net] impl-specializationってfor T以外に具象型でも出来たのか。パラメタ型が現れればいいのか。 >>640 まだRFC #1331が出来てないから正式な文法は存在しない。 自分が使ってるrustcのソース読む以外に文法知る術はないよ。
657 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 02:50:24.84 ID:4QoHymGs.net] チルダ記号~、owned pointer が廃止されてから余ってるけど、何かに使わないのかね
658 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 07:25:27.68 ID:B+nj/ke1.net] オフラインで開発するときにどうすべきかを書いたドキュメントってないの? インストール方法とかライブラリの取得・展開方法とか
659 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 07:54:23.48 ID:4QoHymGs.net] https://www.rust-lang.org/ja-JP/other-installers.html にインストーラーあるだろ。 あるいはレポジトリからソース落として ./configure; make; sudo make install で終わらんか? 依存ライブラリは、Cargo.toml で [dependencies] foo = { git = "https://github.com/hoge/foo.git" } の代わりに、https://github.com/hoge/foo をクローンして来て、 [dependencies.foo] path = "../foo" こんな感じでパスを与えれば良い。
660 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 09:46:49.23 ID:OBNmODWh.net] 最近のpythonではpipでコンパイル済みのバイナリをダウンロードしてインストールしてくれるけど rustの世界でもこうなりませんかね
661 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 12:24:06.11 ID:18+Jkbm8.net] 前も同じ質問してたな rpmやbrew, windows storeにバイナリをアップすればいいんじゃないの ユーザ向けのバイナリ配布環境なんてrustやcargoが整備するモノじゃないでしょ どうせrustやcargoを扱うのは開発者で 開発者はバイナリよりソースの方が色んな面で助かる
662 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 13:30:39.91 ID:H3GKgLxU.net] cargoにオフラインモードってないの?
663 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 23:29:11.08 ID:iIVYU9Hy.net] >>643 ,647 めんどくせぇ話ししてんな。 alexcrichtonが頑なに拒み続けてるからオフラインでcargoは*まとも*につかえね。 依存crateが全部ローカルにあれば問題ないけど、そもそも外部crateがcargoに 依存してるせいで結局、ネットワークにアクセスする。それにapache archivaみたいなのが rustにはないからローカルで管理もできんし、cargo-vendorもcargo-local-registryも開発止まってる。 現状、依存グラフの全てを事前にローカルにダウンロードするツールがない。 cargo側のindexもcargo.lock更新する必要もないのに ネットワークアクセスしてオフラインでクラッシュする問題は そろそろ落ち着いてきたけど、rustcの依存関係調べるあたりが 腐ってるからそっちも影響してくる。これの問題は今、 インクリメンタルコンパイル実装の障害になってるからどうにかしてる最中。 海外は日本と違って無線LAN環境普及してるからか、 ちょっとオフラインになっただけでテストすら走らせられなくなったりでissue飛びまくってんだけどね。 結局replaceも糞でpatchに置き換わるし。
664 名前:デフォルトの名無しさん mailto:sage [2017/08/24(木) 00:17:41.78 ID:l7HQ+RMc.net] 自宅ならともかくモバイルで開発しようとするとオンライン必須は迷惑 rustc直打ちなら問題ないけど非標準のCrateをどうするんだという話に
665 名前:デフォルトの名無しさん [2017/08/24(木) 00:28:13.68 ID:31vrvgnR.net] Frequently Asked Questions doc.crates.io/faq.html#how-can-cargo-work-offline > How can Cargo work offline? > ...(中略) > As of Rust 1.11.0 Cargo understands a new flag, --frozen, which is an assertion that it shouldn't touch the network.
666 名前:デフォルトの名無しさん mailto:sage [2017/08/24(木) 02:10:25.35 ID:2y1G8HO4.net] モバイルもさることながらオフライン限定サーバとかあるしなあ
667 名前:デフォルトの名無しさん mailto:sage [2017/08/24(木) 09:10:11.03 ID:7OYe0+S4.net] よく分からんけど、週末カフェでテザリングしながら開発する分には全く困ったことないけどな 海外っつーか米国は半端に無線LANが整備されまくってるから大変そうだなぁとは思う
668 名前:デフォルトの名無しさん [2017/08/24(木) 10:02:40.03 ID:N2QX0p2s.net] >>652 > よく分からんけど、週末カフェでテザリングしながら開発する分には全く困ったことないけどな 節子それはオンラインだ。 飛行機に乗ってる時とかはそれなりの時間オフラインになりそう。
669 名前:デフォルトの名無しさん mailto:sage [2017/08/24(木) 10:56:17.70 ID:yyGwhDVO.net] >>653 清太よ、>>649 の「自宅ならともかくモバイルで開発しようとするとオンライン必須は迷惑 」へのレスだよ この「モバイルで開発」はテザリングを指しているのではないのであれば、どういう環境のこと言ってるんだろうね
670 名前:デフォルトの名無しさん mailto:sage [2017/08/24(木) 11:36:23.74 ID:nec4MnrL.net] 移動中という状態を除外したら移動体通信ではなくて只の無線通信
671 名前:デフォルトの名無しさん mailto:sage [2017/08/24(木) 18:47:05.57 ID:NSzs0jC1.net] 個人的にはcargoが色々手を回しすぎなのが問題だと思うよ ちょっと想定外だけど真っ当な使い方をしようとすると面倒が増えて、それをissueとして投げるしか無いからcargoがますます巨大になる https://github.com/rust-lang/rust-roadmap/issues/12 ↑でもちょっと出てるけど、今のcargoはインターフェイスとしてそれなりに使えるので、rustc以上cargo未満なツールを作ってくれるとありがたい 他のビルドツールとの連携とか今はかなり面倒。
672 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 06:54:52.63 ID:fv88sy22.net] struct Node<T> { data: T, } があって、 struct Container<T> { nodes: Vec<Rc<RefCell<Node<T>>>>, } のようなContainerを定義して、このコンテナから&Tに直接アクセスするiteratorを作りたい のですが、どうしたら出来るでしょうか?(そもそも出来るのでしょうか?) 雰囲気的には↓のような感じになると思うのですがライフタイムがよく分かりません。 https://play.rust-lang.org/?gist=fb73c80c4303adc14083d049de6ccf3e&version=stable
673 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 12:13:31.91 ID:wqoYH6g/.net] >>656 そういう公式ツールの増大は開発環境を複雑&巨大にするばかりだからやめて欲しい cargoサブコマンドを公式rust libよろしく外部に吐き出してしまえば鬱陶しい文句も出なくなりそう
674 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 15:09:41.26 ID:yTj1cv1p.net] >>657 この例ではRefCell::borrowが返すRef (owned)から<Ref as Deref>::derefによってRefからの借用として&Node<T>を得ているわけだけど、 <NodeIter as Iterator>::nextの末尾でRefがdropされているから借用は関数の外まで生き残らない &Tを直接返す方法があるとは思えないけど、Ref<'a, T>を返すことはできる https://play.rust-lang.org/?gist=5c4a7b0de00dcc6ec0612b8846dd6bfb&version=stable
675 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 15:38:40.83 ID:J7NBnr1n.net] >>659 Refを返すのは思いつきませんでした。 ありがとうございます。それでもよい気がするのでやってみます。
676 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 10:47:16.34 ID:O+zDlIdw.net] このスレで話題にするのはアレかもしれないが、 Servo nightly build が いつ試してみても盛大にぶっ壊れていて、開発順調なのか心配になる。 Rust で開発していると mutability で詰むことがあって、よーく考えてデータ構造なり を変更すればうまく解決できることが多いし、コードもより良くなっていることが多い。 でもその変更って毎回異なった自明でないものだし、局所的なもので済まないこともある。 Servo くらい大規模なプログラムになったとき、もうどうしようもなく詰んだりしないんだろうか。
677 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 11:32:33.62 ID:mrwT3sC4.net] やっぱブラウザ作るには向いてません てなったら悲しいな
678 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 12:07:35.67 ID:O+zDlIdw.net] 気づいたら struct のメンバがほとんど RefCell になってるとかありそう。
679 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 12:14:24.38 ID:3J5PaXHT.net] Rustに熟知してれば変更は自明であり、機能分解点を精査してれば変更は局所的なもので済むんでないかな 小規模なモノを無計画に作るにはRustは適さない言語だと心底思う Servoは長いこと開発続けてるけどあんまり精力的に開発する気なさそうだよなぁ Mozillaが営利団体として潰れそうだし・・・実際Mozilla Japanは潰れてるorz
680 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 12:48:20.45 ID:qL+5xDF6.net] キノコ雲を見上げるsteveklabnikの画像がRust界隈でにわかにミーム化しつつあって笑う
681 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 16:16:56.49 ID:1psTTOfA.net] servoで作ったモジュールがfirefoxに取り込まれていっているし、実験プロジェクトとしては成功なのでは
682 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 22:25:08.80 ID:YYTb5WfA.net] Rustに限った話ではないですけど ・構文解析 ・ハイライト ・オブジェクト追跡 ・入力補完 などの機能を持ち高速に動作するテキストエディタってないですかね? JavaやNode.jsを使った物は総じて動作が重いですし、Cなどで書かれてネイティブな物は機能性で劣る気がします
683 名前:デフォルトの名無しさん [2017/08/27(日) 01:57:19.50 ID:OZ/i8G6F.net] >>667 Node.jsで作ったエディタが重いってそれVSCodeの前で言えるの?
684 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 02:04:39.75 ID:mxFQINt9.net] ageるなアホ VSCodeつーかAtomは実際重たいからな あとスレッドぶん回すからノートPCで動かすとバッテリー消費がシャレにならん JetBrainsのCLionにRust Plugin入れたらブレークポイントも貼れるし良いぞ 誰かJetBrainsから有料版出る前にブレークポイント貼れるようにするPR出さないかねぇ 地味に高いから購入する気にはならんのだよな
685 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 02:12:16.71 ID:PbodRtd5.net] Rustプラグインを単体の製品にするとは思えんけどねえ 彼らは例えばScalaのプラグインとかも手がけているけど別に製品化している訳じゃないし
686 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 02:34:48.02 ID:SDSllFYF.net] VSCode重たくて殺意生える いちいちワンテンポ遅いんじゃ
687 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 04:11:59.30 ID:y+D9Ax/7.net] Vimすらも重いことあるんだけど俺
688 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 07:38:59.45 ID:mxFQINt9.net] vi使えよ、viの軽さに慣れたらvimはそりゃ重たいでしょ >>670 Scalaなんて10年以上前に流行った言語のIDEを今更有料化しても売れないだろうからな Rustは今現在流行ってる(?)言語だし売るんじゃねーのかね
689 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 10:25:11.28 ID:y+D9Ax/7.net] viとか使ってるやついたのか
690 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 12:17:29.76 ID:PbodRtd5.net] Xi使おうぜ
691 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 12:49:38.49 ID:PVSAtTcW.net] Atom (Electron) が Blink から Servo に乗り換えれば軽くなるのだろうか?
692 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 19:27:41.18 ID:gsqvcCn0.net] vscodeって重いよな?起動も動作も軽快とは言い難い むしろvscodeが軽快に使えているという人がいるならどのような環境で使用しているのか聞きたいわ SSDを乗せた標準電圧版Coreiモバイルノートでも結構もっさりだし
693 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 19:39:49.26 ID:PbodRtd5.net] もっさりとかいう言葉じゃ意味不明だからせめて数値で言ってくれ
694 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 19:47:01.83 ID:SLqFnPu1.net] 何を妥協して「せめて」なのか分からんが数値あげてやろう MacBookでIntelliJが6時間くらい保つ所が3時間くらいしか保たない程度に無駄処理多い プロセス上の待機スレッド数も10〜20くらい違った覚えがある 待機中でもそんだけスレッド回してるから、コーディング中、ビルド中の負荷もでかくなるよね VSCodeを愛用してるコーダーはemacs愛用してるコーダー並みにマゾだと思う(viユーザ感
695 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 19:49:16.80 ID:SLqFnPu1.net] >>678 あ、レスするならついでに「せめて」で説明要求を妥協した点を教えてくれい 確認してる範囲であれば答えるよ
696 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 23:25:25.14 ID:tvWh4D3N.net] 好きなエディタを使ったらええ
697 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 09:34:01.20 ID:A8OmMbPi.net] 全くだ、重たいと事実を指摘されても発狂することなく 重たくても他に良い所があるから使ってるんだと言い切っていたemacs愛用者は良い人たち >>675 バックエンドRust, フロントエンドSwift, 通信プロトコルJSON, プラグインサンプルPython ごった煮過ぎて笑うわw
698 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 13:54:58.32 ID:AB0hyKA3.net] rustってやっぱりスペックいいパソコンと高速なネット回線がないと厳しいですね
699 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 22:48:16.13 ID:agJG8fpm.net] 普通の言語だと処理の一部を関数に切り出すのとか簡単に出来るけどRustだと返り値の方が分からなくてそれが難しいことがあるよね
700 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 10:25:57.73 ID:pDFuyP/L.net] let a: () = { ... }; でコンパイラがエラーとして正しい型を教えてくれるぞ。
701 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 13:32:10.36 ID:PRuVKL7F.net] クロージャにすれば良い なあに、きっと最適化で普通の関数と同じ扱いになるさ(適当)
702 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 20:19:45.83 ID:Mxd80Z9N.net] Rustのスレあったんだね
703 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 20:51:46.56 ID:d10AKhdK.net] おい、時報はどうしたんだ?
704 名前:デフォルトの名無しさん [2017/09/01(金) 23:41:11.07 ID:62CxLGbq.net] unsafeだらけ
705 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 23:45:28.89 ID:PRuVKL7F.net] Pijulで開発されているらしきcrateを発見してrepositoryリンクを辿ってみたらNot foundが返ってきた https://crates.io/crates/futures-derive
706 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 00:14:47.90 ID:aRnAy5mn.net] スクワット中なんじゃないの, 筋力ついたらリリースされるでしょ
707 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 00:45:15.54 ID:Qzt2A3g3.net] Rustが最強のプログラミング言語である証明 https://hayato.io/2017/icfp-rust/ 遂に証明されたか……
708 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 01:24:01.14 ID:X2T/f4uE.net] Round 1の結果のみで語られてもねえ
709 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 01:50:33.08 ID:cF7LUBE8.net] なんかnightlyにPythonのジェネレータ入ったとか聞いたんだけど誰得? もうtokioつかFutureあるし。
710 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 08:16:03.50 ID:oilxAadu.net] いつまでたってもスライスパターンが標準にならないのなんで? ほかの関数型言語みたいな言語標準?のリストと、そのパターンマッチ、があればいいけど そういうつもりもないんならスライスパターンをはよ強化&標準装備してほしいんだが
711 名前:デフォルトの名無しさん [2017/09/02(土) 08:35:22.00 ID:zv/5K5Jn.net] 私は最強のRust以外のプログラミング言語で書く気はありません
712 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 08:40:19.17 ID:MacxmZWQ.net] Featureを駆使するので楽になるのはそうだが、 逐次処理的に書けるasync/awaitの方がさらに楽なので それを実現するための要素としてgeneratorは必要 あとIteratorの実装も楽になる
713 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 08:40:57.03 ID:MacxmZWQ.net] FeatureじゃなくてFuture
714 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 11:39:08.16 ID:Nnknp9qO.net] >>692 なんていうか、自分のチームの優位性を示してドヤろうとしたけど決定的な証拠がなかったから自分に有利な調整をしたという感じだな 特定のチームへの非難をしつつそのチームの人間のツイートを自分の主張の補強に使っているのもいろいろアレ まあ競技プログラミング界のゴタゴタはどうでも良いけどとりあえずRustを巻き込まないで欲しいわ
715 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 12:32:15.66 ID:3cz+aWzV.net] >>692 に対してちょこちょこマジレスがいるけど 正規化の文章の注釈[4]でウォーズマン
716 名前:理論とか引っ張り出してるからな [] [ここ壊れてます]
717 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 13:10:10.49 ID:U8pYefIa.net] マヌケは見つかったようだな…ロクにリンク先も読めないのに批判する口だけの能無しが…
718 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 17:38:03.40 ID:pn8ujE89.net] 風情のないやつらだ
719 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 19:03:59.64 ID:AHW4eZK5.net] ウォーズマン理論により各言語の普及率(PG人口比)でスコアを倍加すると 数の暴力が発揮されJavaが最強のプログラミング言語であることが証明される とでも言えば風情があるのかね?
720 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 19:58:54.78 ID:X2T/f4uE.net] 風情駆動開発
721 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 01:23:29.76 ID:KzrJfOQ0.net] ネタにマジレス以下の寒い話だな
722 名前:デフォルトの名無しさん [2017/09/03(日) 02:55:54.90 ID:8KnlJyLG.net] ネタに対する模範解答って『やはりRust最強だな!』とか?
723 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 09:50:38.50 ID:YZmIGy7N.net] >>705 風情の有無を話してるのであって、寒さ暑さを話してるんじゃないんだけど >>706 まずはageないことから始めよう、な?
724 名前:デフォルトの名無しさん [2017/09/03(日) 11:35:08.63 ID:CVrfF8Ix.net] >>702 わび・さび ですよね、わかります I know. sorry & rust
725 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 12:50:33.18 ID:E+2Ill1j.net] お前ら、associated constantsがstableになったってのにいつまで下らない話を続けているんだ
726 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 13:04:30.79 ID:Zk5wiRrT.net] 関連定数が乗ったなら、次は依存型だ!
727 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 13:07:07.67 ID:9s1YDGRT.net] 依存型はやり過ぎだ!高階型でいい!
728 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 14:56:28.19 ID:3Ui33to1.net] impl Trait と トレイト境界の特殊化の実装が先だろ…… これのせいで書けないコードあるんだぞ
729 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 14:59:38.46 ID:E+2Ill1j.net] きっとimpl periodのうちに全部実装してくれるよ(適当)
730 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 16:40:58.80 ID:Sqyt1HzW.net] async を汎用的に実装するなら モナド ( M<T> ) 的な高階型が必要?
731 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 17:05:48.88 ID:4Saw+NMi.net] emccなしでwasmれるって本当?
732 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 20:29:20.09 ID:HVXRIsjy.net] linkerとしてemcc必要では
733 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 01:02:25.35 ID:TiSfjsBP.net] そもそもwasmなんて誰が必要としてるんだという問題がある 実際現状wasm使うよりV8の方が速いだろ
734 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 02:18:35.33 ID:yWQauj9l.net] 実験的な機能に現時点での必要性を求められても……
735 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 03:38:50.42 ID:B0/qvj/R.net] JSの分野でもRust使いたいじゃん
736 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 03:56:46.84 ID:acsdbygY.net] asmjsが早いんだからランタイム側の対応が十分進めばwasmも早くなるでしょ
737 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 10:53:07.99 ID:e2EV4sJ/.net] >>719 Rustなんて実用にならない言語未満使うくらいなら、クソとはいえ言語の体なしてるJS使うわクソ
738 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 12:07:05.02 ID:Wptm5Fxj.net] 好きな言語を使ったらええ
739 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 20:51:30.52 ID:hGu6xlI4.net] お前らslackにまけとるやんけ
740 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 23:53:57.54 ID:yWQauj9l.net] いつの間に戦っていたのか
741 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 02:01:35.76 ID:a/Cb1ZW9.net] Hack&Slack
742 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 04:46:57.50 ID:kj7TSLdS.net] @seanmonstarがMozillaを辞めるとか言いだして一瞬ギョッとしたけど、次の職場ではフルタイムでRustを使うと言っているからhyperの開発はむしろ加速しそう? seanmonstar.com/post/164869651177/bye-mozilla-hello-bouyant
743 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 07:50:37.72 ID:JsNUX7wh.net] rustってまだ俺の中で実験言語だけど そろそろプロダクト作ってる人とか出てる?
744 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 10:31:25.11 ID:Xe9ypjwu.net] >>727 噂では泥箱あたりが使い倒してるとか ずっと前から言われてるけど未だにコードの一つも公開されてないからただの提灯持ちで実際は使われてないと見てるがね
745 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 10:34:56.85 ID:Xe9ypjwu.net] Rustが1.0過ぎてから今に至るまで、Rust使ってるって主張する企業は モジカス自身と個人情報おもらしの一件で何かしら話題とお金が欲しい泥箱しか見ないって時点で色々と察するべきなんだよ お前らいい加減目を覚ませ
746 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 12:37:41.86 ID:xNvKf2Ex.net] https://www.rust-lang.org/en-US/friends.html
747 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 13:37:05.48 ID:Fbd5ldy5.net] 見たことのないフレンズばかりだね
748 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 14:44:43.29 ID:Xe9ypjwu.net] >>730 そのうちモジラのフロント企業じゃないのはいくつだい?
749 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 14:48:42.01 ID:a/Cb1ZW9.net] ID:Xe9ypjwu この異常者まだ居たのか
750 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 16:16:47.13 ID:yjuOh0Qw.net] LINEはモジラのフロント企業
751 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 17:49:37.05 ID:RCCGTejb.net] dropboxやsamsungもmozillaのフロント企業の可能性が・・・? 実はmozillaってすごい会社なんじゃね
752 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:27:40.10 ID:JsNUX7wh.net] rustっていまいち売りがないよな。 ちょっとしたツールを作るっていうのには向いてない気がする。 Goくらいの適当言語がちょうどいい。
753 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:44:37.37 ID:RqVBFvg5.net] ちょっとしたではなく、きちんとしたソフトウェアを書くための言語だよ
754 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:51:45.33 ID:gLY7ZEwx.net] Rustは、型システムがきちんとしてないとイライラしてしまう人向けの言語だよ
755 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 23:06:17.75 ID:iU8sfTGh.net] システムに近いところを触るバックエンドのデーモン等に向いた言語だよ
756 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 00:48:38.63 ID:UIwOcimL.net] SIGSEGVに絶望したくない人のための言語
757 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 09:02:56.43 ID:Sz3zXSu8.net] パッケージのインストールだけで長時間かかるのだけ何とか改善してくれる神様たちっていないんですかね issueにそういう要望とか出ないものですかね
758 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 10:49:22.58 ID:XzXTbCma.net] 前にも出てたけど、CARGO_TARGET_DIRを設定すればさっきそれコンパイルしたじゃん!ってのが無くなる まあコンパイルそのものは遅い方だからそれは我慢する
759 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 16:57:20.79 ID:LVeCvIyg.net] Celeronの1コア、メモリ1GBなのでパッケージによっては5時間経ってもコンパイルが終了しないんですよね 例えばclippyとか。 パッケージのアップデート毎に結局更新されたものをコンパイルし直すからCARGO_TARGET_DIRの設定してもあまり変わらないような気もします Core i7やryzen、メモリ8GBとかだともっと早く終わりますかね?
760 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 17:03:33.32 ID:SQ4/Zkph.net] お前には Core 2 Duo がお似合いだ
761 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 18:26:50.13 ID:n6C9v4DP.net] コンパイラ、コンパイラドライバ、パッケージマネージャをそれぞれ独立して利用しやすくして欲しい ポストC/C++を目指しているはずなのに言語仕様と関係のない制約が増えるのは勘弁
762 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 18:51:54.27 ID:l44s4mC+.net] https://github.com/mozilla/sccache
763 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 19:10:48.28 ID:VuLMXPgk.net] >>745 java, phpが独立した3rd tools乱立でひどいことになったから 次世代は低レベルと高レベルの2レイヤーを公式に提供しようぜって現代の風潮でそれに沿ってると思うが あいつら個々に独立したビルドシステム, テスター, パッケージマネージャー, ランチャーが乱立して辛い rustやgoは公式で色んなものが利用しやすく整備されてて涙が出るよ, マジで rustの公式ツールに不満があるなら3rd toolsを自分で作れば良いよ 誰も作るなとは言ってなくて、作ること自体は止められないはず、賛同する人がどれほどいるのか懐疑的だけど
764 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 19:12:16.98 ID:VuLMXPgk.net] 低レベル:rustc, 高レベル:cargo って意味な
765 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 19:37:16.90 ID:n6C9v4DP.net] Rust=Cargoな感じになっているように思うのは俺だけなのか?とりあえずCargoを使え的な記事ばかりでrustcを活用する記事はほとんど見ない ちょっと高度な事をしようとすると絶望的に情報がない。さらにrustcの不安定性(機能しないオプションがある)が追い打ちをかけるw
766 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 20:12:23.66 ID:OeC1JAcK.net] まあ今のRustとmakeを組み合わせようとはちょっと思えないな
767 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 20:27:57.04 ID:b9fzClHU.net] ビルドにcmakeを要求するのに、エラーメッセージが分かりづらくて はっきりとcmakeの必要性が分からないcrateが結構ある 依存ライブラリ一つ一つまでreadme読まないし
768 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 20:57:11.59 ID:58f4P28i.net] cargo3兄弟
769 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 21:15:39.15 ID:VuLMXPgk.net] build.shからmake叩いて、更にmakeからant叩いてたjava全盛期に比べれば多少はね cmakeの代わりにbuild.rs(及びgcc-rs)使えば良いんだろうけど、build.rs書くの面倒でcmakeに走ってる予感 gcc-rsの機能拡張としてファイルパターンマッチ的なものが提供されたらcargoからcmakeも駆逐されるかもねー あんまりbuild.rs使わないから既にデファクトスタンダードなcrateが存在してたらすまぬ
770 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 21:32:03.27 ID:9SnBSqY1.net] そこまで分かっててなんでRust使い続けようと思うんだお前ら……
771 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 21:35:26.17 ID:5mAj6AyW.net] cargoが便利だから
772 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 22:38:49.71 ID:vuSxRzDq.net] https://blog.rust-lang.org/2017/09/05/Rust-2017-Survey-Results.html ところで夏サーベイの結果出てるな 分かってたがNightlyの使われっぷりに吹く
773 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 01:09:15.04 ID:pG20pyYC.net] だってRust会社で使えないしー が1位でRustむずいよーこわいよー が2位か
774 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 07:25:42.24 ID:2QTh9NrO.net] CrateがCargo前提になっていて他のビルドマネージャやrustcからは実質的に使えないよな?
775 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 10:39:04.19 ID:S617O9ZV.net] cargoって裏でやってることはrustcのラッパじゃなくて独自の方法でコンパイルしてるのか? ひでえ仕様だな
776 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 18:01:04.73 ID:QzkAwThZ.net] >独自の方法でコンパイルしてる そんなことはないはずだが、どこからそんな情報が出てきたんだ?
777 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 21:46:15.77 ID:seYx4u2p.net] crateが実質cargo専用になってるってbuild.rsとかその辺のことか?
778 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 22:56:42.47 ID:wVi6dnoF.net] crates(.ioからのダウンロード、及び、crateの依存解決/分割ビルド)が実質cargo(コマンド)専用と言いたんじゃないのかな curlでダウンロードして、rustcで.rlib作る分割コンパイルすれば出来なくはない cargoコマンドのコードは開示されてるから自分で頑張れ, https://crates.io/crates/crates-io rustcを使いこなせずcargo未満/rustc以上ツールの車輪の再発明を熱望する無能と rustのコンパイルできるコードを書けず挫折したアンチが合わさり話が明後日に向かっておるわ
779 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 23:20:58.99 ID:Aqe6d3N/.net] cargo install に download-only オプションがつけばいい流れ?
780 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 00:39:59.57 ID:XDOpFOHk.net] >type hello.rs fn main() { println!("Hello World!"); } >rustc -V rustc 1.19.0 (0ade33941 2017-07-17) >rustc hello.rs >rustc -v hello.rs > -vが効いていないように見えるけど仕様なの? コンパイラやリンカに与えられているオプションとかを見たいんだけどどうしたらいい?
781 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 03:12:39.89 ID:70HlBZeV.net] rustc -Z print-link-args hello.rs https://github.com/rust-lang/rust/issues/36175
782 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 07:52:33.56 ID:cSX02n8Z.net] それはnightly限定ですやん
783 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 15:02:00.13 ID:2+W6iI80.net] スコープでインスタンスの寿命を静的に管理しようってのは面白いと思うのだが、 再帰的な構造とか扱う場合の簡易さをも少し考えるべきだったね。 まああんまこだわらなければ結構使いやすい気はするけど。
784 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 16:10:21.35 ID:jNusN9J0.net] こだわるも何も木構造まともに書き下せない言語の用途ってなんだよ https://amp.reddit.com/r/rust/comments/33jv62/vecrcrefcellboxtrait_is_there_a_better_way/ この辺の問題も一行に解決してないし
785 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 00:10:13.39 ID:EaeDwKWj.net] まあ raw pointer 使えば何とでもなるし(震え声)。
786 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 15:21:33.90 ID:Z1fxPFbT.net] 木構造は書けるでしょ 難しいのは巡回するグラフ構造
787 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 16:53:04.07 ID:6IGW1QFW.net] >>770 木構造の一番いいサンプルおしえてよ
788 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 21:30:15.59 ID:/y0BRE7n.net] 木にせよ一般のグラフにせよライフタイム管理が面倒くさい
789 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 22:30:44.85 ID:/LC/x3j3.net] この辺とか? agtn.hatenablog.com/entry/2017/01/16/151745 ただ入れる操作によっても RefCell にしたり、やっぱり面倒は面倒。
790 名前:デフォルトの名無しさん mailto:sage [2017/09/11(月) 00:36:42.39 ID:xCZu5AEB.net] ぐええ、隣接リストとアリーナの違いがよく分からない
791 名前:デフォルトの名無しさん mailto:sage [2017/09/11(月) 06:43:38.80 ID:Yii5jhjx.net] 768はこれがまともじゃないっていいたかったんでしょ。
792 名前:デフォルトの名無しさん mailto:sage [2017/09/11(月) 10:26:55.85 ID:XW0rQ7er.net] CやC++ならポインタ持っておくだけで簡単に実現できるのに……
793 名前:デフォルトの名無しさん mailto:sage [2017/09/11(月) 23:14:03.66 ID:0LGm7EQD.net] C++使うか、unsafe使えば良いのでは
794 名前:デフォルトの名無しさん mailto:sage [2017/09/11(月) 23:14:47.15 ID:0LGm7EQD.net] Rc+RefCellな型を用意するだけでもマシになるか
795 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 00:26:37.00 ID:nVT3ZJzi.net] ていうか練習ならともかく実際に使うプログラムでポインタをつないでグラフを表現することなんてそんなに頻繁にあるか? 取りうる表現の中で効率性が最悪な部類じゃん Vecに対するLinkedListみたいなもんだろこれ
796 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 01:20:27.09 ID:Tl3HhyXK.net] オブジェクト指向っぽいAPIを触るときはだいたいその形にならない?
797 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 03:08:23.10 ID:CK+WAwk/.net] グラフの時だけ、ガベコレ使えるGc型が欲しい
798 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 08:30:34.06 ID:mcDW5eHR.net] じゃああんたは現実世界でツリー構造のものをどうやって表すの?
799 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 11:30:27.08 ID:u82oOWPv.net] >>779 VecじゃなくあえてLinkedList使う場面普通にあるんだが……
800 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 14:48:49.21 ID:+kMyckKw.net] linux の赤黒木の実装はポインタベースではあったな。 しかし個人的には配列
801 名前:実装のが結局速いって気はする。 [] [ここ壊れてます]
802 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 15:07:56.52 ID:yDRUgdvZ.net] Effective Hogeでそういうことは言及されてるけど Rustはどうだかなとドキュメント見たらSecond Editionで"Effective Rust"の節自体が削られとる:-( Stack vs Heapはどこかに記述されてた覚えがあるから、ツリー/リスト操作もどこかに潜り込んでるのかなぁ
803 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 17:41:48.32 ID:r07bb/MI.net] 配列ベースの実装はポインタの代わりにindex使うだけだからできることはあんまり変わらんわな 配列の方がデータの局所性高そうで速そうではある
804 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 18:02:30.56 ID:kvuESNKU.net] データ構造によって速い操作が違うという基本的な概念がない奴おるな
805 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 18:50:57.82 ID:wPca0Ysf.net] vectorのmutabilityの問題があるの理解できてる?
806 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 18:53:28.85 ID:O0/aVCto.net] >>779 効率ってなんの効率?
807 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 22:05:08.25 ID:RDvyqWgj.net] >>787 まあそういう無能がありがたがる言語なんだろうなRust
808 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 22:20:04.05 ID:SHXpQI2F.net] mutabilityはRefCell使えば良いのでは Refcell使わずにVecの中身を直接触る必要ある?
809 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 22:27:17.20 ID:wPca0Ysf.net] >>791 いや、それでいいかも rcさえなくなればborrowをユーザに書かせなくてすむからそれでいいや
810 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 14:03:19.87 ID:K9O6G+Si.net] 低レイヤーできます!ってアピールしたい言語なんだろうけれど、 あんま向いてない言語な気はする。
811 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 14:56:53.13 ID:6DzbMbn9.net] 低レイヤを書くにはチェッカーが強すぎて邪魔で、高レイヤを書くには全くカジュアルさがない どっちにもなれない哀れな言語よ
812 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 18:10:30.60 ID:dAYfacw9.net] 並列で大規模で低レイヤーな領域に向いた言語だからどれか一つでも欠けてる領域で使いづらいと思うのは仕方ない
813 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 20:06:39.58 ID:fx0j+lzd.net] 低レイヤーはやっぱC言語だな。 ポインタの習得が難しい事以外に欠点ないじゃんこの言語。 Rustはもっとポインタ扱いやすくして出直してきな。
814 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 20:42:07.11 ID:SU8+D2f1.net] rustの並列処理って言うほど特化(最適化)されてる気はしないけどな・・・ スレッド跨いだオブジェクトの所有権譲渡も保障されてはいるけど、従来言語/ライブラリに比べてめっちゃ便利という感じはしない futures-awaitとかyieldを使うと変わるのかねぇ、無くても困りはしないしと使ってないけどfutures-awaitは使ってみるかな
815 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 20:42:42.41 ID:K9O6G+Si.net] C だっていろいろ批判はあるだろ。 型がゆるいとか、名前空間がグローバルしかないとか。 まあそれを差し引いてもやっぱ有効な言語と思うけど。
816 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 20:49:43.29 ID:6DzbMbn9.net] >>798 Rustのコンパイル通す実力あるならCのその辺りの問題なんてないものと同じだから Rustなんて使わずCでいいじゃんってなるんだよな
817 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 20:52:03.57 ID:SU8+D2f1.net] とか思ってたら、yieldの方が公式nightlyにマージされたのか futures-awaitもnightly要求するし素直にyieldの方を使ってみよ, stableにはいつ来るのかなぁ
818 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 21:19:48.43 ID:KPH4Bf/5.net] 今さら C はねえよ
819 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 21:41:03.71 ID:6DzbMbn9.net] >>801 Rustよりはあるわ
820 名前:デフォルトの名無しさん [2017/09/13(水) 21:54:04.29 ID:8Q7unwrY.net] ID:6DzbMbn9っていつものモジラ/Rustネガキャン君だろ
821 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 21:57:53.87 ID:6DzbMbn9.net] >>803 さすがにあのレベルの基地と一緒にされるのは心外
822 名前:デフォルトの名無しさん [2017/09/13(水) 22:09:43.33 ID:8Q7unwrY.net] いつものコンパイル通らなくて発狂してる基地外かと思ったわ
823 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 22:45:06.07 ID:EXyWFNJX.net] コンパイラーよりも自分が信用できるならC使えばよいと思う
824 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 23:56:44.36 ID:kEFpToCL.net] Rustのコンパイルが通るならCを使えば良い君まだいたのか 自分の言葉通りRustに拘わらずにCを使っていれば良いのに
825 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 08:18:50.41 ID:Y4hD7kDo.net] macro_rules! make_macro { ($id:ident) => ( macro_rules! concat_idents!{test_, $id} { } ); } make_macro!{foo} こういうの無理なのか。
826 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 11:10:13.14 ID:EE2xE751.net] EmacsでRLS使ってる人居る?
827 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 11:12:19.23 ID:XJ7zDnIx.net] >>799 そういう根性論嫌い
828 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 12:55:00.43 ID:NnJxH7VV.net] RustやSwiftとかの次世代言語ってOracle製品やSAPみたいな所あるよな。 無駄に抽象化して変な専門用語作って、プリミティブなエンジニアを寄せ付けない感じとか。 コマンドラインで一発で出来るようなことを、独自用語だらけのGUIでポチポチ操作させてんの。 こういう文化は本当に良くない。優秀なエンジニアはみんな逃げてしまう。
829 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 13:54:06.68 ID:1DVuzpHn.net] >>810 コンパイル時に全部解決しなきゃいかん てな話のがよっぽど根性論だと思うが。
830 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 17:19:47.64 ID:n0wq55dM.net] 人間が気をつけてコードを書けばバグが出ないはずというのは根性論では
831 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 18:36:21.42 ID:DdS4QLGS.net] 人に依存するC/C++は日本的 システムが面倒を見てくれるRustはアメリカ的
832 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 19:05:26.17 ID:1DVuzpHn.net] バグが出ないことよりも手法に熱中しちゃう方が日本的だなとか思っちゃうけど。
833 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 19:14:58.28 ID:NxItWvHk.net] 形容詞化する国名
834 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 20:08:31.29 ID:wsl9UgI1.net] 〜的ってつければなんだって形容詞になるの? 人に依存するC/C++はC/C++的 システムが面倒を見てくれるRustはRust的
835 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 21:28:39.91 ID:ekPhWBa7.net] C/C++でもバグが出ないほど規模が小さい or 言語への習熟度が高いならC/C++使えばよいし そうじゃないならRust使えば良いとしか言ってないのだが
836 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 21:51:38.65 ID:egb+Ths/.net] 単純に「巡回グラフを始めとした自己再帰型のデータ構造を書き下せない(コンパイラが通してくれない)」って時点で、書けないプログラムの存在を認めてしまってるんだよなRustは その上C言語にはValgrindやらcppcheckやら、金かかっていいならCoverityやら、いくらでもその手のツールはあるわけで、 Rustならではの点ってどこにもない割に欠点だけ目立つ訳よ 肝心の抽象化も機能足りてないしな。Nightly使えばなんぼかマシだが
837 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 00:12:38.69 ID:znUIhbu+.net] どうしても全部Rustだけで実装したいのか
838 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 00:29:00.00 ID:tkwXjMs/.net] △全部Rustだけ ◯全部safe Rustだけ Escape hatchの類は使いたくないというsafe Rust信仰の裏返しというツンデレなのでは
839 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 01:05:02.21 ID:QM7YGf64.net] How can I implement a graph or other data structure that contains cycles? https://www.rust-lang.org/en-US/faq.html#how-can-i-implement-a-data-structure-that-contains-cycles
840 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 13:00:11.59 ID:3YdKOJD0.net] できるできないレベルの話をしているのか、やりやすいやりにくいレベルの話をしているのかどっち
841 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 13:25:48.45 ID:5eAkzQwm.net] できない => できるよ => やりにくい => そうねー => 応答終了, 最初に戻る こんなのをずっと繰り返してるイメージだ モジラ/Rustネガキャン君とRustのコンパイルが通るならCを使えば良い君の二人なのかな 二人とも長いこといるし、コンパイル通せないRustが相当憎いんだろうなぁと思ってる
842 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 23:54:50.13 ID:mfxKdXka.net] Cだって肝になるところをアセンブリで書くのはまれによくあることだし、 Rustで書きにくいところをCで書いたっていいよな
843 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 02:17:34.76 ID:lHsVDIMy.net] Rustのコンパイルが通るならCを使えば良い君は、暗黙のうちにCで完全なメモリ管理を行うことの困難さを訴えているんだよきっと
844 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 06:49:34.00 ID:bgl6NL4A.net] 変な人がわくほどメジャーな言語になったんだなぁ
845 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 12:21:42.89 ID:CDKitgfC.net] てか細かいとこ C で書いてあとは軽い言語から呼ぶとか普通してるじゃん。 一つの言語で無理やりやろうとするからどっちつかずになるんじゃないのかね。
846 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 12:23:12.97 ID:FR19qSmR.net] >>828 RustがC(++)の後継目指してるとか言わなきゃこんなに言わんよ
847 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 17:33:19.57 ID:hyq1PMdM.net] C(++)の座が奪われると危機感を感じて 「Rustのコンパイルが通るならCを使えば良い」と必死なのかw 置き換わるにはまだまだ先が長いから安心して自分の巣にお帰りに
848 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 17:34:53.66 ID:lHsVDIMy.net] Rustのコンパイルが通るならCを使えば良い(自分はできるとは言っていない)
849 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 20:08:37.91 ID:OnGiRDkA.net] 実際に使ってる人たちは本当にいつかRustがC(++)に置き換わると思ってるの?
850 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 00:38:06.21 ID:NXS5TlTy.net] RustがC/C++の後継目指してるなんて公言してるのか
851 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 09:53:24.02 ID:2FAjS2AD.net] 一応Goもc++の置き換えを想定した言語らしい。もっともgoogle社内の話だが
852 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 12:44:11.46 ID:7diltdBj.net] >>830 ×まだまだ先が長い ○先にモジカスが世界から消滅する 先が長いとか言ってる時点でモジカスのステマに荷担してると理解しろ Rustがプログラミング言語を名乗ってるのはモジラが自由をお題目にしてるのと同じレベルの害悪だ
853 名前:デフォルトの名無しさん [2017/09/17(日) 15:13:14.19 ID:9f3JHXln.net] 複数のResultのNGをXORでまとめて(途中match分岐入れず)処理するのてどうすればいい? 超極稀に失敗する変な返り値を格納しても副作用の無い処理の連なりをゴソっと捨てる方法
854 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 16:26:31.76 ID:IHBqIXQE.net] >>833 少なくとも firefox の c/c++ 部分の書き換えを想定してるだろう。 まあ c/c++ と一口に言っても結構レイヤーは広いように思う。 てきとうなサーバープロセスなら確かに go は書きやすいよ。 rust にそういうエリアがあると思えんというところが問題の焦点じゃないかね。
855 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 17:40:27.30 ID:aqlfcEMy.net] >>836 求めてるものかどうかわからんが、Iterator<Item=Result<t, E>>はcollectでResult<Vec<T> , E>などにできる
856 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 19:45:22.12 ID:0mVr+JRg.net] 相当雑いけど>>838 の実装例はこんな感じかな ttps://play.rust-lang.org/?gist=c87421997c42f0dfa8aa6ecabbb7ba3b&version=stable 性能を突き詰めるならcollectしないでfilterの戻りをnextで回すべきだけど適当に 確か100万回くらい回したら数秒の差が出るくらいのはず
857 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 23:03:20.12 ID:xQI4uTVr.net] >>839 そういや、こうやって変数のシャドウイングを積極的に使っていくのってどうなんだろうな? 俺はよくやってるけど、スタイルにうるさい人から怒られるかもとか思ったり
858 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 23:17:40.08 ID:tCD9jFlM.net] >>839 https://play.rust-lang.org/?gist=4f2e38dd8570a14eb1801137a183e40d&version=stable こういう途中Errがいたら戻り値もErr、全部OkならOk<colletion>な意図だった
859 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 23:18:40.79 ID:tCD9jFlM.net] collectも#inlineついてるなら手でfor書くのと同じになりそうだけど遅くなるのか ExactSizeIteratorとただのIteratorで違うとかならわかるんだが
860 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 23:25:16.47 ID:ks3Dkyyp.net] OCamlだと普通なんで読みにくさを感じたことは無いなあ むしろその変数はそこで終わりです、もう頭に入れとかなくても良いよってことだから脳にやさしいとまで感じる
861 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 08:30:10.39 ID:KEjrNeQk.net] >>842 collectの関数コールは最適化されて消えるけど、collect内でVectorを作る分があるからな メモリ確保して、要素をコピーしてって誤差程度だけどコストが乗っかる filterまでだとFilterは作るけど要素のコピーはしてない感じだったから 他言語, 他ライブラリのfilterメソッドの戻りで配列/リストを作り直すIF/実装に比べて比較的早そうだと思った
862 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 11:26:55.19 ID:/3RzmXHq.net] なるほど、Vec作るコストという意味なら確かにcollectはコスト掛かるね まとめて処理というのがIteratorの要素からなる配列などのデータ構造を作って何かすると理解していたけど、 そうでないならば f.map(¦x¦ {do_something(); }).collect::<Result<Vec<()>, _>>() とすれば作られるのはVec<()>で、要素サイズ0だからヒープからはメモリ割り当てられないはず これやるぐらいならfor使った方が
863 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 14:28:43.98 ID:nF8z8OFK.net] 一方C言語ならそんな面倒なこと考えずにallocしてforでいい 学習コスト高くて性能も低い言語Rust
864 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 16:37:25.22 ID:JVxZ+5NP.net] alloc?
865 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 17:16:35.57 ID:nF8z8OFK.net] >>847 mallocとcallocのことをまとめてallocって言うんだがまさかRust民そんなことも知らない?
866 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 17:40:00.45 ID:2cmO/IBQ.net] 俺たち、ついさっきまでzero-allocationな実装方針について話してなかったっけ……?
867 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 17:48:40.40 ID:/3RzmXHq.net] せんせーallocaはallocに含まれますか
868 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 18:07:06.15 ID:/S27bRBH.net] 定義による スタックから確保するものと ヒープから確保するものを どちらもallocと呼ぶなら含んでる
869 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 18:11:47.24 ID:iR2mDVT9.net] >>849 ゼロアロケーションつっても最初の一回はallocするだろ? その後forでナメながら変換すれば単純で早くてコンパイルも通ってモジカス涙目みんな幸せって言ってんの 無駄に難しく考えるモジカスシンパらしい話だな >>850 非標準関数はNG
870 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 18:15:30.06 ID:2aiOt6ta.net] 基地外って同じ言葉を連呼するからNGし易くて助かる。
871 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 19:17:59.90 ID:ndBW2Q0n.net] 要素サイズ0のVecはヒープからメモリ獲得しないと明言したはずなのですが
872 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 19:24:02.49 ID:JVxZ+5NP.net] >>846 の書くヒープアロケートするCコードはスタックアロケーションのみのRustコードより高性能なんだよきっと
873 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 19:39:48.02 ID:K4Qo/KNH.net] >>853 造語症っていうんだっけか? それはそうとRustでCのmallocやcallocと同じ操作ってBoxであってVecではないよなあ。
874 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 19:56:01.80 ID:2cmO/IBQ.net] 低級言語で書けばそれだけで性能が良くなるって勘違いはよくあるよな >>856 どっちもヒープを使ってるから同じでええやろ
875 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 01:46:56.36 ID:EmWEVfWy.net] 話が明後日の方向に行ってるけど >>844 の主点はVecを作るコストではなくVecに要素コピーするコストの方だぞ filterで除外した要素をcollect内でVecにせっせとコピーするからちょっち時間かかる ちなみにC(++)でベタに実装するとこんな感じでリスト作成、要素コピーするからドングリの背比べ std::list<char*> filter_collect(std::list<char*> v) { std::list<char*> new_v; for (auto i = v.begin(); i != v.end(); i++) { if (*i != NULL) { new_v.push_back(*i); } } return new_v; } std::list<char*> v{"Hello", NULL, "World"}; auto new_v = filter_collect(v); モジラ/Rustネガキャン君とRustのコンパイルが通るならCを使えば良い君が よりよいCコードを挙げてくれるのをちょっと待ってみようか, 流石にこれは汚すぎる
876 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 01:57:29.08 ID:yqqf+3Rr.net] (そもそもの>>836 が何をしたいのかいまいち分かっていないなんて言えない)
877 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 09:23:52.82 ID:b711gf7K.net] これをCというか いやまあC++としても酷いが
878 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 09:49:54.63 ID:EmWEVfWy.net] (大丈夫、俺も分かってない...多分>>841 さんの実装例が期待コードだったんだろうと匙投げた)
879 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 11:20:24.23 ID:yHWjYg1H.net] 仕様分からないのに実装しようとするRustの文化すげー
880 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 18:29:28.71 ID:zYSzUAzu.net] そういえばRustってそもそもまだ言語仕様がなかったっけな(RFCが通ってない) そんな言語を良しとするモジカスとそのお友達
881 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 07:39:00.40 ID:D+wOfrtb.net] RubyやLua等も商用でも使われているけど公式な言語仕様って存在しなかった気がする
882 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 08:58:49.24 ID:q1jVsKYV.net] RFCが通るとはどういう意味だろう まさかIETFの話ではないだろうな
883 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 17:20:54.79 ID:8IyKZYzR.net] https://github.com/rust-lang/rfcs
884 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 17:30:21.92 ID:KkNJUG2l.net] https://github.com/rust-lang/rfcs/blob/master/text/2113-dyn-trait-syntax.md さすがにこのSyntaxはダサいぞ?
885 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 18:24:29.42 ID:8IyKZYzR.net] どうせならいっそ新しいepochでbare Traitのシンタックスでimpl Traitのセマンティクスを表すように変えて欲しくもあるけれど、motivationでも言われている通り互換性の観点からしてまあ無理だわな 理念には同意できるけど、うーむ……ダサい
886 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 18:24:58.43 ID:SerGpeBo.net] じゃあ討論してるIssueに行って、ダセェからこうしようぜって具体例を提案してこい 良さげだったら(y)押してやんよ
887 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 18:39:23.24 ID:Yecv0E+U.net] これがダサいとかいうならimplとかpubなんてクソの山だろ >>868 impl Traitのセマンティックスに置き換えたところで例えばVec<Display>にi32とStringを両方突っ込もうとしてエラーになるようなへまをする連中は消えないだろ >>869 もうFCP過ぎてマージされてるんだよなあ
888 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 18:42:43.35 ID:DfdXTJVQ.net] 誰か3行で
889 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 12:28:08.72 ID:47xDJ4SG.net] rustの三文字文化好き mut, str, len, vec, rev
890 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 13:46:38.85 ID:Cgi1rfOq.net] 変数名にしたかったのを予約しやがって!でもある
891 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 14:49:56.77 ID:ebiRk4qs.net] Contextual keywordって書いてある
892 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 15:11:25.15 ID:aCorn/qh.net] let str = "Hello"; let str: &str = str; これで普通にコンパイル通るしな。 変数名に出来ないのは>>872 の中じゃ mut だけだろう。
893 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 19:15:33.07 ID:nrpIGIl5.net] str, len, rev あたりは変数名として結構使うかな。 str , vec あたりは s, v くらい短くすることもある。
894 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 17:44:10.64 ID:VL5Szw+L.net] 比較演算子 ==, <, > 等って、同じ型同士でしか定義できないのか
895 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 20:16:16.24 ID:dG0lqnCY.net] それはEqとOrdの話でしょ PartialEqとPartialOrdは別の型同士でも定義できる
896 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 20:38:52.59 ID:VL5Szw+L.net] あ、ホントだ。出来たわありがとう。 use std::cmp::PartialEq; struct Foo(i32); impl PartialEq<i32> for Foo { fn eq(&self, other: &i32) -> bool { self.0 == *other } }
897 名前:デフォルトの名無しさん [2017/09/27(水) 15:23:55.91 ID:ENHC296h.net] Firefox Quantumリリースだってよ
898 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 23:11:15.94 ID:r8V8UQwO.net] Rust 1.20、関連定数などを追加 https://www.infoq.com/jp/news/2017/09/rust-1-20-released
899 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 00:21:45.83 ID:FngsmGBk.net] 時報が壊れたと思ってたら、常時一ヶ月遅れの情報サイトをソースに時刻通知がきたよ 本人じゃなく模倣者だろうけど次回からは一次ソースのサイトをトリガーにしような!
900 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 00:30:16.29 ID:fGSoqmif.net] 何でこの人こんなに怒ってるんだろ?
901 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 00:53:16.99 ID:FngsmGBk.net] 1. 時報が壊れたことに怒っている 2. 一ヶ月遅れのinfoqをソースにしたことを怒っている 3. 模倣者であることに怒っている 4. その他 どれだと思う?
902 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 02:25:57.30 ID:uh95Bh7/.net] 一ヶ月入院でもしてたんだろ 許してやれ
903 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 10:21:58.71 ID:YdXqj+6X.net] CもObjCもここ数年は仕様変更がないから、コンパイルはそのまま通る。 変なコード書いてなければ動作確認も問題なくパスする。 メンテナンスフリーって言われれば確かにそうかもな。 あとはフレームワークで非推奨にになったメソッド書き換える程度だけど、 これはSwiftと共通の作業だし、そもそもやらなくても動く。 とにかくSwift移行していない俺は毎年高みの見物してる。
904 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 10:22:21.88 ID:YdXqj+6X.net] すまん誤爆した
905 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 11:26:40.22 ID:YA9Keehz.net] これが小学生のおっぱいかよ・・・ 12歳の乳とは思えんな・・・
906 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 11:51:24.12 ID:2cPiFSeP.net] 誤爆しすぎだろ。
907 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 22:06:45.55 ID:7WUGaaf4.net] rustの前にc++とhaskellぐらいはやっておくべき?
908 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 23:43:36.68 ID:w5CvkGV8.net] C++なんてやらんでいい。haskellよりOCaml寄りじゃね? C++よりメモリ周りが「javaからgcとロック付きオブジェクトとモニタと 並列ライブラリがなくなった」代わりに低レベルなマルチスレッドコード書けば 型システムが守ってくれるモノが近い。
909 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 00:20:49.42 ID:BhtSjkD0.net] 所有権の概念はC++のmove sem
910 名前:antics回りが近いと思うけどな まあゲーム作るとかじゃなければわざわざC++やらなくてもいいと思うけど [] [ここ壊れてます]
911 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 22:05:33.32 ID:uuI0Lqz4.net] Rust言語による第一プロダクトのFirefox Quantumですが ベータ版リリースの時点でアドオンがお亡くなりになったとか、不安定でどうしようもないとか、メモリ食い潰して落ちるとか 様々なお声が聞こえてきますね これがRustという安全な言語で作ったプロダクトなんですってね おめでとうございますモジラ信者と工作員の皆様
912 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 22:25:31.06 ID:BhW5NZCu.net] アドオンが不安定ってのはRust関係なくね?
913 名前:デフォルトの名無しさん [2017/09/30(土) 22:38:45.63 ID:ATIH6GBG.net] ベータ版の意味も知らないガイジやんけ ガガイのガイw
914 名前:デフォルトの名無しさん [2017/09/30(土) 22:39:37.33 ID:ATIH6GBG.net] あそれあそれガイジが出た出たよよいのよいw
915 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 00:00:05.60 ID:HKOr6Xa1.net] >>894 API鞍替えのせいだから全く関係ない。 メモリも関係ないし、むしろ最近はバージョン上がるたびに消費メモリ減ってる。 というかパフォーマンス良くなったのは設計が変わったからで言語は関係ない。 言語関係する部分はC++よりマシだから書きやすくなったこと。
916 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 00:42:35.99 ID:5jXWEgsq.net] >>897 設計の変更って具体的に何を変えたの?マルチスレッドに強いとか?gpuぜんていとか?
917 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 23:58:38.97 ID:HtGiOKW4.net] >>898 HTMLの描画周りがマルチスレッド前提になっただけよ。 シングル前提でやるとHTML/CSSパース、DOM構築で同期取りまくりが減っただけ。 うちのmem 4g, 2core環境だとハードが足引っ張ってたから多分mem 8g, 4coreくらい要ると思う。 ここ数年のロースペックマシン以上が恩恵受けるんじゃ? gpu前提はwebrenderだからまだ入ってないんじゃない。
918 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 00:20:10.84 ID:cuHSEpt/.net] あ、悪い。webrenderもう入ってるわ。 webrenderとstyloが入ってるからもうマルチスレッドにgpu前提。
919 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 11:21:20.04 ID:pqkzvat0.net] Firefox爆速化件だけど、あのタイミングでRust化してればRustにも一気に注目集まったのにな。 もったいないな。
920 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 14:16:58.24 ID:5q9eN7RZ.net] w3mの代替になるコンソールブラウザがほしいところ
921 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 00:06:33.86 ID:eeE5kOTG.net] lynks、links、EWW(Emacs)ではいかんかった?
922 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 01:21:42.46 ID:Eb49UXKr.net] それよりAmayaの後継をwhatwgに作って欲しい
923 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 09:33:38.58 ID:xy+7bXnG.net] >>901 cssはrustになったんだよね?
924 名前:デフォルトの名無しさん [2017/10/04(水) 17:45:04.59 ID:U/p5CYqb.net] FizzBuzz を無駄にベンチマークしてみた By Nim、golang、Rust、Crystal、その他 wolfbash.hateblo.jp/entry/2017/07/25/232027
925 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 19:54:27.21 ID:eSRFZM0D.net] なんというか、、参考にならないベンチマークだな。
926 名前:デフォルトの名無しさん [2017/10/04(水) 23:17:46.14 ID:aUT+fN/H.net] 参考になるベンチマーク教えてくれ
927 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 00:04:55.49 ID:NTKdykpp.net] benchmarksgame.alioth.debian.org/u64q/performance.php?test=knucleotide ここの諸々 久しぶりに見たらC gccがついに抜き返しててワロタ C言語、頑張ったじゃん
928 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 01:11:32.12 ID:froF/td
] [ここ壊れてます]
929 名前:j.net mailto: >>909 6パターンだった頃は全部実行出来てたけど速度はバラバラでたしか#5が最速でC言語より速かった きっと最適化を人間が制御するのは難しくて頑張らないとJavaやC#にも勝てない 現在7パターンあるけど4つがmake errorになるくらい言語仕様が不安定 実に参考になる [] [ここ壊れてます]
930 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 02:42:46.62 ID:e0oopfTd.net] >>909 mem順にしてもgz順にしてもcpu順にしてもD言語出てこないの悲しいな
931 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 04:56:45.53 ID:ovcMkddr.net] d言語のメリットって何?
932 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 06:07:45.62 ID:eC/9GoxN.net] C++ではないこと
933 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 09:06:46.27 ID:NTKdykpp.net] >>910 人間が頑張って最適化した結果、C gccが上回ったんじゃないのかね D言語はプログラミング人口少ないから・・・ 2000年代の流行った頃ならもうちょっとスコアが出てたんじゃないかな
934 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 10:18:07.23 ID:KYi0aOcC.net] RustもJavaも血反吐吐くほど最適化してるんじゃないの? ポインタ扱いにくい言語でそれやると逆にコードが汚くなるから、 C言語よりも酷いコードになってるかもしれんよ。
935 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 10:41:40.98 ID:j9fazbko.net] unsafe使ったらRustは更に早くなるのか・・・胸熱 取り敢えず、各コードを読んでから批評してはどうか 本家Rust Teamが改修して今のスコアだけど 彼らが直したのはI/Oにバッファ使おうぜってだけでそこまで変態的じゃないのよね matchやmap, iterでクロージャー多用してるけど最適化コンパイルしたらif, forで書くのと同じ処理になるし Option.mapは関数コールがあるから重たいかなと以前調べたら LLVM中間コードの時点でインラインのif分岐(goto文)に展開されてベタコードと同じになるのかよと考えるのやめた
936 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 11:26:31.98 ID:291DnPVM.net] >>909 C gcc 5.38 Rust #7 5.56 C++ g++ #3 7.18 Java 8.38 ↑この並びでみると、Rustの速さよりもむしろJavaの意外な速さに驚く
937 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 12:31:31.21 ID:mvbuHBBx.net] ぼくも同じこと思った…
938 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 12:49:03.43 ID:i3OOJkl5.net] Javaは実行時最適化がはまれば速い感じ でも、カリカリにチューニングされたJavaコードは、クラスをあまり使わずArrayだらけだっりしてつらい
939 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 17:58:39.05 ID:DY6JRVMF.net] rlsもっと頑張って replも提供して😭
940 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 18:51:45.79 ID:BHTkAY6s.net] C言語の __func__ みたいなの無いのかよ〜
941 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 23:04:07.77 ID:arvYOnSy.net] Javaやら.NET等のJIT系言語は速い速い言われるけど実際のアプリケーションでその速さを体感できたことは一度もないや・・・
942 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 23:35:19.66 ID:AzAoa99L.net] >>909 rust#7はrayon使ってるから中身はcocoとfutureか。 ライブラリが頑張ってzero cost抽象化が効いてる感じかね。 javaはもうちょっと早くなるんだけどなぁ。 これ以上やるとjitとライブラリに丸投げして素直なコード書くことに 専念できなくなるからやりたくない感じ。 将来的にはconst arrayと、勝手にSIMD使ってもうちょっとマシになるかな。 >>919 連続してることが保証されないからカリカリにチューニングする時は配列には頼らないよ。 nio buffer使うことはあるけど。unsafe使わずに配列確保すると0クリアされて無駄に遅いし。 仮想関数テーブルなくしたほうが速いからメソッド検索>invokestaticのコストの時staticに変えるとか、 動的ディスパッチ自分で実装するときにconstant specific class bodyとtable switch組み合わせるとか。 >>921 ないけどrpすればすぐに入りそう。
943 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 00:32:27.39 ID:ckjydJIo.net] >>923 >連続してることが保証されないから それはもはやデータ構造として「配列」と呼ばれるものではないのでは……
944 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 00:59:19.34 ID:PVLgxPLf.net] Dは仕様変更が多すぎた
945 名前:デフォルトの名無しさん [2017/10/06(金) 01:12:44.86 ID:aJzo16CX.net] >>923 javaの配列って連続領域の保証されてないの?
946 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 11:58:56.15 ID:R7tcOQE1.net] スレチだけど、JVMの実装仕様なんてベンダー依存でしょ, OracleとGoogleでも当然違うわ
947 名前:デフォルトの名無しさん [2017/10/06(金) 22:14:03.16 ID:aJzo16CX.net] だから言語として仕様化されてないの?ってことだろ。 c++だって実装バラバラだけど連続領域な仕様だろ。
948 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 22:51:58.93 ID:R7tcOQE1.net] Cはポインタ I/F仕様に引きづられて配列仕様も必然として明確にせざる得ないからでしょ JVMはbyte codeの解釈さえあってれば良くて、データ操作の実装仕様は知るかよって話だよ VM上では連続領域に見せかけても、実態は数チャンクに分けた配列の持ち方だってあろうよ
949 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 00:56:21.68 ID:OPYXFct1.net] いやだから、データ構造としての「配列」のデータ操作の時間空間コストと 実装がズレてたらそれはもう「配列」じゃないから
950 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 02:30:16.92 ID:tD6GhHlF.net] 一般的に配列と呼ばれるオブジェクトがメモリアドレス上でも断片化しないことを保証される処理系ってほとんど無いのでは? ミュータブルオブジェクトへ要素を継ぎ足していったらコードからは連続的に見えてもメモリ配置は断片化するだろう
951 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 04:32:31.86 ID:OPYXFct1.net] 「要素を継ぎ足していったら」がそもそもオカシイ 要素継ぎ足せるのはそもそも配列じゃなくてロープかなんかだから
952 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 08:20:38.57 ID:PzpAWNqF.net] 配列の要件ってインデックスで要素にアクセスすることくらいじゃないの? 要素のポインタをとって操作できる言語以外は実際の記憶領域が連続かそうでないか 判断する術はないと思うが。
953 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 08:39:14.98 ID:rgSj2Elc.net] ポインタ操作だって処理系依存でどんな変態実装も理論上はあり得ると思うけど C/C++の仕様を調べる気力がない
954 名前:デフォルトの名無しさん [2017/10/07(土) 09:54:16.89 ID:h9TjUWM8.net] >>933 > 配列の要件ってインデックスで要素にアクセスすることくらいじゃないの? じゃリンクリストでもいいってわけ? インデックス操作は内部でポインタたどってさ。
955 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 12:18:14.74 ID:bipqd+gM.net] 配列だとインデックスのアクセスにO(1)を期待してるが それが保証できるのかという話じゃないの
956 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 12:27:49.68 ID:FDovMcEa.net] >>936 お前は話の最初から読みなおせw オーダーのことなんか誰も気にしてないよ
957 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 12:40:30.10 ID:efrwvuZ0.net] チューニングで気にするのはメモリ配置よりCPUキャッシュに乗るかどうかでは そのとき配列のサイズが気にされるというだけで
958 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 12:44:02.10 ID:bipqd+gM.net] >>937 >>930 これの解釈は?
959 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 12:59:08.16 ID:PzpAWNqF.net] データ構造としての「配列」と言語機能としての配列は別の話だから。
960 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 14:30:31.33 ID:bipqd+gM.net] O(1)でもO(n)でも a[i]と書けるなら配列だって感覚? そう考えるのは自由だがまともな話はできなさそうだな。
961 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 15:00:19.40 ID:FL3S/Goc.net] Rustの話はないんでしょうか
962 名前:デフォルトの名無しさん [2017/10/07(土) 16:04:55.47 ID:+/+oWVUp.net] そんなの処理系によるわ 動作は変わらないからどうでもいい
963 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 17:48:20.09 ID:M+fCWBh9.net] JavaScriptのArrayを配列と呼ぶのは間違いだ! と吠えている人がいますね
964 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 19:34:14.94 ID:efrwvuZ0.net] そんなに気になるならソース見に行けで終わり
965 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 20:58:38.51 ID:PTRnmd1t.net] >>941 逆にちゃんとした定義ってあるの?
966 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 00:52:44.13 ID:riNh/ezn.net] >>943 >そんなの処理系によるわ >動作は変わらないからどうでもいい オーダーの違いはまさに動作の違い > JavaScriptのArrayを配列と呼ぶのは間違いだ! > と吠えている人がいますね データ構造としての配列じゃないのはそうだろ 配列じゃなくてハッシュマップですよねー というのがマトモなCS出身者の反応
967 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 07:38:16.10 ID:whyFhQ9X.net] 引き続きオーダー厨がフィーバーしてんなw >>946 >>926 , >>928 曰く、C言語には仕様として配列は連続領域であることが決まってるらしいよ んで、Javaでは特に連続領域で実装することを仕様と定めてないよねーって話をしてんだろ
968 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 08:29:08.64 ID:Eg4i3QFB.net] >データ構造としての配列じゃないのはそうだろ >配列じゃなくてハッシュマップですよねー 結局、それまで展開していたオーダー云々の論理はどっかにやって 「配列じゃないものは配列じゃない」ってかw
969 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 09:02:22.19 ID:p8wkQapI.net] ポインタの値が連続でも実メモリ空間のアドレスは連続とは限らないし そのあたりのアドレスの連続性の抽象化をOSでやるか言語の処理系でやるかの違いと思えば 配列の要素の仮想メモリ空間でのアドレスが必ずしも連続ではない言語処理系があっても良いと思う
970 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 09:38:42.04 ID:whyFhQ9X.net] >>949 配列とは、連続領域で確保されO(1)でアクセス可能なものと(俺の中で)定義する それ以外の仕様、実装による配列は配列とは認めない という論理で一応オーダー云々も彼の中では含まれてるんじゃないかな ポインタのポインタで配列を設計したら、それはもうハッシュであり配列ではない的なことも言ってるし 多数の言語仕様, 言語処理系で配列ではないものが配列として扱われてて大変そうだなって思うね:D
971 名前:デフォルトの名無しさん [2017/10/08(日) 10:03:07.61 ID:W71T9805.net] JSのArrayは配列じゃなくてリスト TypedArrayが配列 メモリが連続化を気にするとかどれだけ低レベルな言語使ってるんだ インターフェイスが同じなら実装とかどうでもいい 老害かよ
972 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 10:54:24.49 ID:T4FplNPL.net] データ構造の読み書きのオーダーも仕様の内だけど、メモリ上のレイアウトまで仕様という考えはマイナーじゃない? アドレスを当然のように明示的に扱う言語だと当然の範疇かもしれんし情報として提供して欲しいけど、そうでない言語ならn番目の要素へのアクセスがO(1)であれば配列でいい で、Rustはアドレス直触りは可能だけど普通はやらない。Cみたいに構造体のメモリ上の表現がはっきり決まってるわけでもないし
973 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 15:41:19.83 ID:EDHW4lpZ.net] >>951 > 配列とは、連続領域で確保されO(1)でアクセス可能なものと(俺の中で)定義する そう思うのは勝手だけどそれに基づいて他人を批判するってどんだけ独善的なんだ
974 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 18:42:51.40 ID:4PvrPlQX.net] そろそろRustの話に戻してくれ
975 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 18:57:23.11 ID:riNh/ezn.net] array data structure でググるさま
976 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 20:18:32.63 ID:whyFhQ9X.net] >>952 (配列の定義を)お前がそう思うんならそうなんだろう お前ん中ではな ちなみに、Rustスレ住民はRust言語を使ってるゾ >>953 Rustのstructメンバは連続を保証してるんでなかったかいな repr((C)で宣言した時に限ってるんだっけ、unsafe多用してる変態がいたら教えてくれ
977 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 00:25:52.32 ID:KLfOKOYK.net] >>933 それって、(一次元)
978 名前:コンテナでは。 で、コンテナの実装方法として配列やらリンクドリストやらが存在する。 [] [ここ壊れてます]
979 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 00:29:02.79 ID:KLfOKOYK.net] >>952 > インターフェイスが同じなら実装とかどうでもいい そういう目的にはrust使う必要なくね?
980 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 00:30:54.57 ID:KLfOKOYK.net] >>953 Rustがそういう態度だと言うのなら、C/C++の代わりには使えないなぁ
981 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 01:24:12.13 ID:EU3MdReC.net] >>953 システムレベル言語でそれは無い
982 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 07:09:58.47 ID:HQb3QT54.net] https://play.rust-lang.org/?gist=9e8a69e064b98d48c48e237d87d005a1&version=nightly これ、少し前の nightly-2017-09-15-x86_64-apple-darwin だと通るのに、 最新の nightly だと conflicting implementations を起こすな。 rustup update したら急にビルドに失敗して驚いた。
983 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 08:32:46.93 ID:/FMCjJgs.net] nightlyが仕様変更したりバグったりするのを逐一驚いてたら大変じゃない?
984 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 09:00:12.81 ID:CsWYGxTc.net] >>958 もともと配列やその他のデータ構造からインターフェースのみ抽出したものがコンテナなんで、 それを言語仕様の側からは単に配列と称していることはあるだろう。 仮にそれを認めないとしても、元の質問の「JVMの配列は連続しているか」が「JVMのコンテナ(?)は 連続しているか」になるだけ。
985 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 10:26:26.16 ID:EKQlpQJF.net] いるなぁC++のプロジェクトでarrayで十分なところに無駄にmap使いまくるやつ おっさんプログラマとしては看過できないんだが(少なくとも仕事では) これが時代なんだろうか
986 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 11:43:46.40 ID:iPiyLv0T.net] なにか問題でも?
987 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 14:35:43.67 ID:y6Coq1tU.net] メモリコスト、CPUコストについて定量的に説明できるかな
988 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 14:47:42.14 ID:5Wk6yJf6.net] 自分もどちらかと言えば効率厨のつもりだけど 実行コストと可読性が大差ないなら好きな方を使えばいいと思う
989 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 15:19:06.41 ID:ICZ1WqoM.net] コンテナ使うとコストが見えにくくてよく分からん
990 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 17:24:05.08 ID:65lUV9pA.net] さすがに array と map ではアルゴリズム自体違うわけだしそれはなしだろ。
991 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 18:49:17.20 ID:GUc1DOLO.net] Vec<f32> を Vec<f64>に変換したいのですがどうしたらいいでしょうか? やりたいのは &[f64]を引数として受け取る関数にVec<f32>の内容を渡したいのですが。
992 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 20:31:04.63 ID:2SZ05bPF.net] https://play.rust-lang.org/?gist=0cd6e0b3f8c028d720b6936505df6c9b&version=undefined 受け取る関数がTraitでf32, f64を受けろと思うけど、外部ライブラリで作ってるなら仕方ないんだろうよ
993 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 20:46:44.09 ID:g5Xwcr4f.net] >>972 ありがとうございます 今回は外部ライブラリだからしょうがないかな 普通はなんのtraitで受けとるんでしょうか?
994 名前:デフォルトの名無しさん mailto:sage [2017/10/11(水) 16:41:05.41 ID:3w9jP5qe.net] 色々あるんだろうけど、こんな一例 https://play.rust-lang.org/?gist=d00fb7f7041fce1649767ecf95bb936a&version=stable AsRefとかIntoとかFromとか、なんかその辺調べたらいいんじゃないかなぁ 他人に公開する目的のpub fn以外で使うのはバイナリ容量増やす一因になるからいたずらには使いたくは無い(他人がする分には気にしない ただまぁ、枯れたおっさんプログラマの感想であって、map, arrayの使い分けに口出すおっさんは同様に口出してくると思うので注意されたし
995 名前:デフォルトの名無しさん mailto:sage [2017/10/11(水) 17:46
] [ここ壊れてます]
996 名前::13.24 ID:6qFX/88z.net mailto: >>974 基本的に↓を使ってるんで、 https://docs.rs/alga/0.4.0/alga/general/trait.Real.html これの https://docs.rs/alga/0.4.0/alga/general/trait.SupersetOf.html あたりを使えばいいんすかねぇ [] [ここ壊れてます]
997 名前:デフォルトの名無しさん mailto:sage [2017/10/11(水) 20:18:32.35 ID:SdSs/e3t.net] rustって難しいって聞くけどどうなの? 数百行程度のcliツールとか作るのにも適してる?
998 名前:デフォルトの名無しさん mailto:sage [2017/10/11(水) 20:36:37.19 ID:wUY7e6c6.net] 借用やライフタイムを理解できない内は難しいかもね。
999 名前:デフォルトの名無しさん [2017/10/11(水) 20:58:57.23 ID:gwIT2xqO.net] %%%%4NEL%%%% 000-SAV-&1.0888214%ML<\47MBL%0.2\MSSSS4.213> 1.8882/%B/%SB/<\2/7BL\%\%B!B%47L%Si72B>%10.2%\ 002%\B%===>>>52 .B<\rbc/2.8>>\7B<<\7LB>>\72S\<%\42%><\br>001BYON$\%7L2%3.33GHz>>>2 .3GHz<\br> 41.B%LB%"<<%11.6$%><<\86.1B>>2 LB>"B???S3>>71 $-?>6%<\br> 082@<\7L@@<\br> \LOOP>0<1Entra
1000 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 09:41:32.32 ID:cYUXFwFa.net] >>975 RealがSupersetOf<f64>を継承してるから受け取る関数がf64を扱うならTrait Realを受ける形でも良さそう Alga使ったことなくてどっちを使う方がスマートなのか分からんから、自分が取り回しやすいと思う形でどうぞ
1001 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 09:07:46.54 ID:ZLjOYpzW.net] Announcing Rust 1.21 - The Rust Programming Language Blog https://blog.rust-lang.org/2017/10/12/Rust-1.21.html めぼしい変更無し。
1002 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 15:11:36.11 ID:bp4APqrz.net] Rustの話をしないRust板の住人 言語として形になってないから言語のことを話せないんだろうなぁ 直近もまともな更新ないし、世間の話題も下火だし 工作員さんもっと頑張らないといけませんよ(ハナホジ)
1003 名前:デフォルトの名無しさん [2017/10/13(金) 17:39:13.20 ID:xbVdueHZ.net] tanakhのrustベタ褒めツイートでも列挙しようか
1004 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 17:40:12.67 ID:+y/vofi6.net] >>976 性能だすために生ポ触るとかしなければボローイングなんかも そんな難しく考えずにコード書けるとは思う。 一部の馬鹿が言語機能をドヤしたいってのが一番流行るのを妨げてる。
1005 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 17:44:57.66 ID:PbP1JTIY.net] じゃんじゃんクローンすればいいんだよ 性能に困ったときだけ再考すればいい
1006 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 18:36:57.97 ID:FAMCtm4a.net] >>980 何代目の時報か知らんけど次スレよろ あと、2年近くかかって取り込まれたrvalue static promotionをスルーするとかどうかしてんぜ
1007 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 18:45:29.22 ID:RXIUnIoB.net] ムーブセマンティクスをきちんと意識すれば借用はそこまで難しかないよね まあそこでCの経験が却って邪魔になるところがあるわけだけど
1008 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 20:29:09.18 ID:5Bkpm/HR.net] QtをやったあとでもRustの有り難みって実感出来る?
1009 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 22:43:54.95 ID:dC2M8380.net] borrowing というか mutable aliasing だけはやっぱり辛いなあ。 多くの場合 struct メンバの false sharing なんだよね…。
1010 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 14:12:57.17 ID:VwleOtKV.net] >>980 「Rust 1.21」リリース
1011 名前: 2017年10月13日16:15 末岡洋子 https://mag.osdn.jp/17/10/13/161500 [] [ここ壊れてます]
1012 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 17:39:51.15 ID:uWD69LeP.net] 次スレ プログラミング言語 Rust 4 https://mevius.5ch.net/test/read.cgi/tech/1507970294/
1013 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 14:37:51.04 ID:WeNwPolS.net] >>986 moveや借用は簡単なんだけど、その結果引き起こされる制限を回避していくのが面倒。
1014 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 17:36:12.11 ID:GYZBU1+2.net] >>991 その「面倒」って感じるのがまさしくCの経験の負の遺産なわけよ
1015 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 10:08:35.93 ID:ZoMoe7Af.net] 脱出しようとして墜落してるのか
1016 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 00:44:35.87 ID:2lESXdgM.net] 994
1017 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 00:45:47.02 ID:2lESXdgM.net] 995
1018 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 00:46:13.27 ID:2lESXdgM.net] 996
1019 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 00:46:56.38 ID:2lESXdgM.net] 997
1020 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 00:48:00.58 ID:2lESXdgM.net] 998
1021 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 00:48:41.67 ID:2lESXdgM.net] 999
1022 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 00:49:08.90 ID:2lESXdgM.net] 1000
1023 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 151日 10時間 44分 40秒
1024 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています