16/11/02 03:13:34.24 MYQ7Ohex.net
URLリンク(www.infoq.com)
日本語版
作者Graydon Hoareへのインタビュー
URLリンク(www.infoq.com)
"it seems a long time ago when @sayrer and I agreed to invest in
@rustlang. But it was not, in Internet time."
URLリンク(twitter.com)
3:デフォルトの名無しさん
16/11/02 03:15:35.56 MYQ7Ohex.net
2016年10月31日 11時17分00秒
Firefoxを爆速化させる次世代ウェブエンジン「Project Quantum」をMozillaが発表
URLリンク(gigazine.net)
> Mozillaから発表されたProject Quantumは、
> 同社が独自開発しているプログラミング言語「Rust」と
> 並行処理型レンダリングエンジン「Servo」をベースとしたレンダリングエンジンです。
MozillaWikiで述べられているように主な目標は(並列処理を安全に書けるRustによる)並列化の推進だな
URLリンク(wiki.mozilla.org)
>Quantum will leverage the fearless concurrency of Rust and high-performance components of Servo to bring more parallelization and GPU offloading to Firefox.
4:デフォルトの名無しさん
16/11/02 03:18:58.64 MYQ7Ohex.net
Rust Language Service (RLS)
URLリンク(github.com)
Mozilla、Language Server Protocolを実装した「Rust Language Server」を発表
URLリンク(mag.osdn.jp)
5:デフォルトの名無しさん
16/11/02 03:20:31.02 ttxNZg5R.net
Why Rust?
URLリンク(www.oreilly.com)
Contributing to Rust ・ The Rust Programming Language
URLリンク(www.rust-lang.org)
tokioはFutureパターンによる非同期IOのためのライブラリだよ(ざっくり
解説記事:URLリンク(medium.com)
解説記事:URLリンク(aturon.github.io)
リポジトリ:URLリンク(github.com)
6:デフォルトの名無しさん
16/11/02 03:21:47.93 ttxNZg5R.net
Announcing Rust 1.12
URLリンク(blog.rust-lang.org)
エラーメッセージがカッコよくなってる
あとMIRが有効になって配列アクセスの境界チェックの最適化とかがより高度になってる
試してみた限りでは、get_unchecked()を使って手動で配列アクセスを最適化したりする意義がかなり薄れて来た印象
7:デフォルトの名無しさん
16/11/02 03:22:18.42 ttxNZg5R.net
Announcing Rust 1.12.1
URLリンク(blog.rust-lang.org)
安定版では初となるpoint release
MIR関連の問題の修正が主らしい
将来のpoint releaseの予行練習的意味合いもあるだとか
8:デフォルトの名無しさん
16/11/02 03:23:07.37 FzlbzNie.net
乙
9:デフォルトの名無しさん
16/11/02 03:27:18.65 MYQ7Ohex.net
LinuxのカーネルがRustで書かれればいいのに
↓
カーネルより先に手を付けるべきとこあるからなぁ
待てない人はRedoxOS試してみたら?
↓
まずはOpenSSLかLibreSSLのpure Rust実装からだな
↓
TLS
URLリンク(github.com)
↓
RustってOS作れるほどのローレベル操作が出来るの?
それともC/C++みたいにアセンブルコード併記できるってだけ?
↓
URLリンク(github.com)
なんだ、アセンブルコード普通に書いてるだけか…全部Rustで作れるわけじゃないんだな
10:デフォルトの名無しさん
16/11/02 03:28:17.50 MYQ7Ohex.net
最後のリンク切れてたスマソ
11:デフォルトの名無しさん
16/11/02 05:47:26.44 ydCUsA37.net
>>9
それ言語の問題じゃなくデバイスドライバ関係の問題じゃないの?
OSはRustで書けるけどLinuxのデバドラ関係はハードウエア会社がCで供出してるのが多くない?
12:デフォルトの名無しさん
16/11/02 14:46:31.43 db1quxwb.net
O2
13:デフォルトの名無しさん
16/11/02 22:26:01.78 Q6z2ZaLV.net
-C opt-level=2
14:デフォルトの名無しさん
16/11/03 02:12:42.03 uNlJqCt7.net
>>9
URLリンク(github.com)
アセンブルのコードがなくなったわけじゃないのか
15:デフォルトの名無しさん
16/11/06 21:21:20.79 jd7v1+bJ.net
bootloaderとその次のモード切り替えとかページングを設定するところは、マジックだらけでアセンブリ以外で書くなんて逆に面倒だよ
intermezzOS書いてる人がそこら辺丁寧に説明してる
URLリンク(intermezzos.github.io)
3.1, 3.2, 4全部あたりの内容をrustで書けるようになればアセンブリはいらなくなる
けど読めば分かるけどアセンブリで書いた方が楽だし、自分の知る限りここらへんも楽に書ける高級言語なんてC含め存在しない
rustで書けるまでに必要なアセンブリとCで書けるまでに必要なアセンブリは同じじゃないか?
これがランタイムが必須な言語とかだともう少しかかるし、Cで環境整備する必要が出てくる、はず
16:デフォルトの名無しさん
16/11/07 01:10:24.52 MDpsc3Qw.net
結局はC/C++コンパイラとはオサラバ出来ないってことだな
17:デフォルトの名無しさん
16/11/07 01:22:23.98 R+xSUJD7.net
?
18:デフォルトの名無しさん
16/11/07 04:18:50.54 EaPQMBZD.net
おまいなんでこのスレにいるんだω
19:デフォルトの名無しさん
16/11/07 09:59:59.37 VusNeGCl.net
最終的にはLLVMをRustで書き直す
20:デフォルトの名無しさん
16/11/07 15:05:06.72 mwwnaA+N.net
cretonneかな?
21:デフォルトの名無しさん
16/11/07 16:35:38.47 R+xSUJD7.net
>>20
へえ、こんなのあるのか。初めて知ったわ
てかSpiderMonkeyもoxidizeしようとしてんのか
URLリンク(github.com)
URLリンク(internals.rust-lang.org)
22:デフォルトの名無しさん
16/11/07 19:10:26.42 LSc5ar9N.net
>>16
つ URLリンク(doc.rust-lang.org)
23:デフォルトの名無しさん
16/11/16 02:47:56.82 fzskfnoe.net
早漏おつ
24:デフォルトの名無しさん
16/11/16 09:12:58.40 twfBKQax.net
配列使ってるとコードが as usize まみれにならない?
25:デフォルトの名無しさん
16/11/16 15:32:07.91 1Neovnoq.net
前>>997
YES
というかfeature-gatedな機能はみんなnightlyじゃないと使えないよ
26:デフォルトの名無しさん
16/11/16 20:03:41.58 WS3xMITp.net
実はstableでもToSockeetAddrsを使うとlookup_hostと同じことが出来る
use std::net::ToSocketAddrs;
fn main() {
for host in "www.example.com:0".to_socket_addrs().unwrap() {
println!("{}", host);
}
}
個人的に使うプログラムなら普通にNightlyを使えばいいけど
27:デフォルトの名無しさん
16/11/16 23:59:43.38 twfBKQax.net
仕事でRust書いとる人いるの?
28:デフォルトの名無しさん
16/11/17 00:01:05.90 q947Bjkq.net
>>27
いるよ(アスペ
URLリンク(www.rust-lang.org)
29:デフォルトの名無しさん
16/11/17 02:54:48.66 x6fZSDmo.net
メジャーバージョンアップデートでもないのに
互換性のないアップデートが続く新興言語なんてどれも実務では使えないわ
まだ遊びでいじるに留めとけ
30:デフォルトの名無しさん
16/11/17 03:08:24.08 q947Bjkq.net
>>29
>互換性のないアップデート
例えば何がある?
さすがに「forward-compatibleじゃない」とか言われると参っちゃうけどさ
31:デフォルトの名無しさん
16/11/17 03:53:37.98 PG/Ol9T0.net
?演算子を使ったコードがrustc 1.12.1でコンパイルこけた! 互換性落ちたRust死ね!!!
何なんだよRust。
Stability as a Deliverableじゃねーのかよ。
昨日見事にコンパイルこけたわ。
どうすんだよ私code freeze出来ねーじゃねーか。
コード�
32:曹「てメンテしてcrates.ioにpublishしてPR送ってやるって言ってるのにRust teamは何が不満なんだ? 何がpick threeだよクソ。 コード書いたはいいけど希望通りに保守するのほぼ無理だからwって言っててコード書くやつなんかいねーよ。 デグレしてもいいしCoC破るのもどうでもいいから互換性上げろよ。 Servoで何百万行無駄に使ってんだよ。 ロゴの犬とかどうでもいいから互換性上げろよ。 有名なエンジニアに払う金あるなら互換性上げろよ。 どうすんだよコーディングやめなくちゃならねーだろ。 ふざけんなRust。 互換性上げられないならバージョン0.xにしろよ。 互換性も上げられないしmajor ver.も0に戻せないけどergonomicsなんとかしたいんだよねーってそんなムシのいい話あるかボケ。 Rust teamがコード書かせないでどうすんだよ。 金があればコード書くってやつがゴマンといるんだから取り敢えず金出すかコーディングにかかる費用全てを無償にしろよ。 デグレしたりCoC破ったりTRPL作ってるやつ見繕ってMozilla職員を半分位クビにすりゃ財源作れるだろ。 まじいい加減にしろRust。
33:デフォルトの名無しさん
16/11/17 04:29:22.06 q947Bjkq.net
何でCarol Nichols氏クビにするの!?
34:デフォルトの名無しさん
16/11/17 07:39:11.93 gs7Dk9ts.net
えっ後方互換守ってるならsemver的にも1.xだよ
前方互換だとライブラリにも言語にも何一つ追加出来ないじゃん
なんで ? 演算子を使ったコードを1.12.1でコンパイルする羽目になったんだろうね
外部ライブラリ? 早速移行してる奴があるのかな
35:デフォルトの名無しさん
16/11/17 07:41:12.65 gs7Dk9ts.net
バージョン指定してないならお前が悪い、minorバージョン上げずに?演算子導入してたらその作者が悪い
36:デフォルトの名無しさん
16/11/17 08:58:28.37 lS45HIXq.net
>>31
これはネタじゃないの?
37:デフォルトの名無しさん
16/11/17 09:19:37.76 TWtGx4vL.net
この前Rust開発チームを辞めた二人とも、AppleのSwiftチームに引き抜かれてたのか
この裏切り者めw
38:デフォルトの名無しさん
16/11/17 15:25:43.74 .net
>>31
保育園落ちた日本死ね!!!
何なんだよ日本。
一億総活躍社会じゃねーのかよ。
昨日見事に保育園落ちたわ。
どうすんだよ私活躍出来ねーじゃねーか。
子供を産んで子育てして社会に出て働いて税金納めてやるって言ってるのに日本は何が不満なんだ?
何が少子化だよクソ。
子供産んだはいいけど希望通りに保育園に預けるのほぼ無理だからwって言ってて子供産むやつなんかいねーよ。
不倫してもいいし賄賂受け取るのもどうでもいいから保育園増やせよ。
オリンピックで何百億円無駄に使ってんだよ。
エンブレムとかどうでもいいから保育園作れよ。
有名なデザイナーに払う金あるなら保育園作れよ。
どうすんだよ会社やめなくちゃならねーだろ。
ふざけんな日本。
保育園増やせないなら児童手当20万にしろよ。
保育園も増やせないし児童手当も数千円しか払えないけど少子化なんとかしたいんだよねーってそんなムシのいい話あるかよボケ。
国が子供産ませないでどうすんだよ。
金があれば子供産むってやつがゴマンといるんだから取り敢えず金出すか子供にかかる費用全てを無償にしろよ。
不倫したり賄賂受け取ったりウチワ作ってるやつ見繕って国会議員を半分位クビにすりゃ財源作れるだろ。
まじいい加減にしろ日本。
39:デフォルトの名無しさん
16/11/17 16:06:27.38 A0HGbkef.net
>>35
ネタだという点を引いてもツッコミ所が……
40:デフォルトの名無しさん
16/11/17 16:08:52.05 q947Bjkq.net
>>36
URLリンク(internals.rust-lang.org)
>They got jobs that prevent them contributing.
迂遠な言い回しをなさることで
てかNomiconどうすんだろう? Beingessner氏がいなくなってから全然進んでないじゃん
41:デフォルトの名無しさん
16/11/17 16:34:09.37 A0HGbkef.net
今書かれてる新TRPL(rust-lang.github.io/book/)が完成してからとかになりそうだなー
ただクラブニク氏やゴルディング氏がその辺の記事書けるかどうか……
どちらも言語やライブラリの開発に関わってないし
42:デフォルトの名無しさん
16/11/17 18:55:40.39 Drbt4+cn.net
Rustに貢献することがAppleへの転職活動になるなら、
それを期待して気合い入れてやる人も増えるだろうし、
1ユーザー的には、よろしいんじゃございませんか
43:デフォルトの名無しさん
16/11/17 19:00:40.42 Pl+03tlF.net
日本人は低レベル云々とか言い出すから良くないんだな
海外ではその辺まとめてシステムプログラミングと呼ぶことで平和になってる
44:デフォルトの名無しさん
16/11/17 20:24:03.49 lS45HIXq.net
外国人はシステムプログラミング云々とか言い出すから良くないんだな
国内ではその辺分けて低レベルと呼ぶことで考察/議論してる
45:デフォルトの名無しさん
16/11/17 20:25:33.13 lS45HIXq.net
テキトーなラベリングやグルーピングで海外ageとか欧米か
46:デフォルトの名無しさん
16/11/17 21:18:21.62 .net
低レベルと言うとナイーブな人がショボいんだと勘違いしかねないので損な言い方だ
47:デフォルトの名無しさん
16/11/17 21:31:41.19 Drbt4+cn.net
下層プログラミング
ローレベルプログラミング
48:デフォルトの名無しさん
16/11/17 21:51:27.83 .net
基幹レイヤーとか横文字混ぜつつそれっぽくすれば煙にまける
49:デフォルトの名無しさん
16/11/17 22:41:13.69 TglxajGy.net
昔はREPLが公式のリポジトリに入ってたみたいだけどなんで消されたの?
URLリンク(github.com)
なんかこれは開発止まってるみたいだし。
REPLあったら便利なのに。
50:デフォルトの名無しさん
16/11/17 22:53:18.85 q947Bjkq.net
Miriのreportでfuture projectとしてREPLの話が触れられているけど、今どうなってるのかは知らん
51:デフォルトの名無しさん
16/11/17 23:04:57.14 Xpn3XiCU.net
一行毎にコードを累積していって毎回コンパイル・再実行するようなもので
まともに動く感じじゃなかったし
誰も使わずメンテもされず放置されて結局消された
52:デフォルトの名無しさん
16/11/18 00:19:24.79 7Bhmrgzh.net
もうrustも頭打ちだな。資金力的にも限界か?
こりゃ早々にswiftに流れた方がいいんでない?
53:デフォルトの名無しさん
16/11/18 00:19:48.50 8Vgx8rP9.net
おっ、ようやくマクロが#[macro_use]の代わりに普通にuse出来るようになるのか
54:デフォルトの名無しさん
16/11/18 00:29:13.23 eBWh43b3.net
>>51
iconとかどう?
URLリンク(www.cs.arizona.edu)
55:デフォルトの名無しさん
16/11/18 00:31:08.99 oLAPaOst.net
>>52
ほほう
URLリンク(github.com)
56:デフォルトの名無しさん
16/11/18 01:03:00.53 E7bW9eot.net
>>53
ぱっと見Rustユーザと共鳴するような要素がなさそうに見えるんだが
FAQを流し読んだだけだけど
57:デフォルトの名無しさん
16/11/18 01:14:06.04 oLAPaOst.net
>>55
Ponyとかはどうだろう?
URLリンク(www.ponylang.org)
58:デフォルトの名無しさん
16/11/18 10:17:38.16 t+31LzEv.net
AdventCalendarでtokio触ろうとしてる人居るけど、あれ12月までに安定するかねぇ
大幅な改造の途中なので厳しいかも
59:デフォルトの名無しさん
16/11/18 12:23:03.10 Mjcgtpxv.net
整数型の暗黙のアップキャストが無いのは不便じゃない?
前にも書いたけど、配列のインデックスで as usize を頻繁に書かされてつらい。
実行効率的には、同じ処理をC言語で書いた時も、size_tへの
暗黙のアップキャスト処理が入るのかな? 意識してなかったけど。
60:デフォルトの名無しさん
16/11/18 15:05:29.01 ujW5dFKb.net
移植性がRust的には問題なのかなぁ
as usize は環境によってはダウンキャストかもしれないじゃん
今の所明確なポリシーはないが、例えば usize == u8 という環境への移植性も考えて
impl From<u16> for usize が存在しなかったりするし (URLリンク(github.com))
個人的にそんなにキャストが必要になった記憶は無いんだけど
対策するとしたら、こんな感じでVecのラッパを書くとか
URLリンク(play.rust-lang.org)
61:デフォルトの名無しさん
16/11/18 15:59:29.27 vbdBJsNN.net
>>31
firefoxをdisりたいならあっちで
62:デフォルトの名無しさん
16/11/18 17:11:13.69 oLAPaOst.net
'static [T; 0x100]の添え字としてu8を突っ込むことは割とよくあるから、そこだけでも暗黙の変換をして欲しいと思ったりする
impl<T,U,Idx> Index<T> for U where T: Into<Idx>, U: Index<Idx>
を公式に実装したら何か問題があるのだろうか?
過去に誰かしら議論してそうなもんだけど、それっぽいものが見つからない
63:デフォルトの名無しさん
16/11/18 18:48:56.40 JDsTmOFu.net
定型処理用は演算子になるのか。
@演算子はどんな処理を担うのかしらん。
64:デフォルトの名無しさん
16/11/18 18:57:53.19 ujW5dFKb.net
どこかのスライドで &'static str とするべき所 'static str と書かれてたが
この'staticは参照に対するパラメータなんだよな、切るとすれば &'static / str
例えば [i32; 0x100] とか自体は [i32; 0x100]: 'static 以外のライフタイムを持たない
束縛した変数や借用に初めて寿命が付く
>>61
今のRustだと追加できなさそう
(T: Into<T> なので、他の impl Index<某> for 何がし と衝突する)
それ以上にRustコミュニティの暗黙の変換の類に対する反感が大きいっぽいという問題があるけど
65:デフォルトの名無しさん
16/11/18 18:59:11.49 ujW5dFKb.net
T が非 'static のライフタイムパラメータを含まないなら T: 'static、で合ってるっけ
66:デフォルトの名無しさん
16/11/18 21:18:08.74 Mjcgtpxv.net
配列インデックスの件、ググってたらこれが理由とする書き込みがあったんだが、
正直、意味わからん。
ループカウンタがレジスタサイズと異なるとおかしい事になるって感じ?
URLリンク(gist.github.com)
67:デフォルトの名無しさん
16/11/18 21:34:00.80 aJxYJn23.net
>>56
なんか思想的に、グリーンスレッドが存在したりしてた頃のRustみたいだな
68:デフォルトの名無しさん
16/11/21 10:14:06.26 1EpFjc3X.net
小さなツールを作ってみてJava版より数割遅かったんだけど、
プロファイラで調べてみたら、どうやらmalloc/freeに相当する処理が
遅いことが分かった
69:デフォルトの名無しさん
16/11/21 10:48:44.85 kg262VVv.net
malloc/free実装者を断頭台へ!
70:デフォルトの名無しさん
16/11/21 10:53:20.16 cW+sH+/p.net
URLリンク(github.com)
71:デフォルトの名無しさん
16/11/21 11:43:08.65 0HSHfyI4.net
JVMはひまにならないとfree処理しないから
なんか普通に負けそう
72:デフォルトの名無しさん
16/11/21 12:17:15.89 goLgdzFN.net
足りなくなった時も free するから
常に忙しいときに限って free するハメになるのが実態
73:デフォルトの名無しさん
16/11/21 12:22:33.26 gVIfBZaZ.net
おまいらの部屋と一緒だな
74:デフォルトの名無しさん
16/11/21 12:30:45.34 cW+sH+/p.net
ちっ……ちげえし……
75:デフォルトの名無しさん
16/11/21 12:32:42.35 1EpFjc3X.net
>>67
少し補足すると、JITコンパイラが効き始める10ループ目ぐらいまでは
Rustの方が速かった
76:デフォルトの名無しさん
16/11/21 12:38:17.81 0HSHfyI4.net
>>71
そりゃ設計悪いだろ
そういう時はランタイム(GC)特性を気遣って設計しろw
小さなツールならGC回りまくることもなかろう
そうなると常時free処理するGCなし言語の方が不利だわ
77:デフォルトの名無しさん
16/11/21 12:49:34.69 cW+sH+/p.net
小さなツールならVM起動のオーバーヘッドのあるJavaの方が何でもない
78:デフォルトの名無しさん
16/11/21 12:52:14.62 2S9X8Lpw.net
>>72
鋭すぎ
79:デフォルトの名無しさん
16/11/21 12:54:12.88 h2bcMzRZ.net
突き刺さる
80:デフォルトの名無しさん
16/11/21 13:53:31.49 cBdbCQ89.net
>>76
プログラムが小さいとVM起動のオーバーヘッドはほぼ無視できる
81:デフォルトの名無しさん
16/11/21 14:12:07.49 0HSHfyI4.net
逆でないか、JVM立ち上げでGCスレッド、メインスレッド等々の初期化で結構時間かかるぞ
ソフトウエア全体の処理が大きいと誤差に収まるけど
今回はalloc/freeがネックって言ってるから、そこは計測時間に入ってないと推測
ループ開始から終了までとSystem.gc呼んでの強制GCまでを計測したら、トントンないしRustのが早いってことになって欲しい(希望
それでもRustのが遅いなら断首台へ
82:デフォルトの名無しさん
16/11/21 16:38:54.33 cBdbCQ89.net
>>80
逆ではない
プログラムが小さいとは書いたがプログラムの演算量が小さいとは言っていない
ツールが小さくてライブラリをあんまり読み込まなくていい時はJVMの初期化なんて誤差
83:デフォルトの名無しさん
16/11/21 16:49:33.16 OhDwUouz.net
んん?
GCが回りまくらないような、演算量の小さなツールの話じゃなかったか?
84:デフォルトの名無しさん
16/11/21 16:54:29.52 cW+sH+/p.net
アレや、プログラムは小さいけど演算量が大きくてなおかつGCが回るほどヒープを消費しないアレや
例がパッと思いつかないけど、プリミティブ型ばかり処理してれば当てはまるんじゃない?
85:デフォルトの名無しさん
16/11/21 16:56:10.15 cW+sH+/p.net
>>83
いや待て、自己レスになるけど、それじゃあRustでもfreeは発生しないわ
86:デフォルトの名無しさん
16/11/22 06:33:32.35 vdf1OFJq.net
昨日、Rustの初心者向けイベントがあったらしいね。
検索してみると、100人ぐらい集まったみたい。
初心者向けのはずなのに何故か難しい、って感想の人が多い。
あと、拠点を作っても外人に襲撃されて奪われるらしい。
87:デフォルトの名無しさん
16/11/26 11:52:46.03 S9oyLAu3.net
Mozillaってところが不安要因だな・・・
88:デフォルトの名無しさん
16/11/26 15:33:02.63 T6V/AejO.net
crate logを使うと実行ファイルにビルド環境のフルパスが埋め込まれるのがモニョッとする
自分で使わなくても依存してるライブラリもあるし
専用のビルド環境作るか、そもそもソースで配布するかしないと
配布バイナリにユーザ名を埋め込んじゃうよぅ
89:デフォルトの名無しさん
16/11/26 15:53:47.96 GTqt9DX8.net
PR出して直してくれ
90:デフォルトの名無しさん
16/11/28 23:43:32.36 NwIkJeSB.net
>>87
確認してみたけど、logで使われてるmodule_path!() はcargoディレクトリ以下の
相対パスしか入らないから、ユーザ名は入らない。
但し、logと無関係にデバッグ情報としてフルパスが入る場合はある。
Linux版はdebugビルドでのみフルパスが入る。
Windows(MSVC ABI)版は、releaseビルドでも.pdbファイルへのフルパスが入る。
stripすれば消えるんじゃない?
91:87
16/11/29 18:41:45.92 8U8Bj8BQ.net
>>89 確認、ありがとう 調べ直したところcrate logのみに依存した場合、フルパスは存在せず おっしゃるとおりlogは無罪 お騒がせしました 以下、環境は Linux / i686, x86_64 / stable 1.13.0 /
93:87
16/11/29 18:44:01.08 8U8Bj8BQ.net
途中で切れてしまったので再掲
以下、環境は Linux (i686, x86_64) stable 1.13.0 "cargo build --release"
調べたところlogの出力の為にenv_loggerとリンクしている場合、
依存しているaho_corasickやregexへの
${HOME}/.cargo/registry/src/git-****/***以下のフルパスが埋め込まれてました
これは"strip -s"でも消せず
はて? と思い aho_corasickのみに依存したプロジェクトを作成してみると
同様にフルパスの存在を確認
これがtoolchainによる差異なのか自分には判別できませんでした
以上、単なる状況報告ながら、一報まで 長文お目汚し失礼しました
94:デフォルトの名無しさん
16/11/29 20:05:45.86 5ToPonfe.net
env_loggerでもやっぱりフルパスは入らないと思うけど、
それはともかく、env_loggerは依存ライブラリが多すぎて
リビルドが重くなるから嫌い。正規表現はオプション機能でいいのに。
95:デフォルトの名無しさん
16/11/29 21:38:40.43 ejQm3rha.net
>>92
regexはoptionalだからdefault-features = falseで外せるとは思うけど
96:デフォルトの名無しさん
16/12/01 23:59:57.63 dyH4Mas/.net
これ見ると意外とRustのウェブフレームワークって重たいのなorz
URLリンク(www.techempower.com)
上位に上がってるのはガチで速度だけを追求したLightWeightなフレームワークだからなんだけど
Rust製の速度を突き詰めたフレームワークが欲しいと思った今日この頃
97:デフォルトの名無しさん
16/12/02 00:25:33.03 MHSZZ/vj.net
現状のRust産フレームワークは非同期処理とかまともにできてないからなあ
98:デフォルトの名無しさん
16/12/02 00:37:52.17 vsoRl3Y/.net
その辺りはきっとtokioの五人が何とかしてくれるさ……
99:デフォルトの名無しさん
16/12/02 00:39:42.77 hH98Vq+f.net
per secでどれだけ捌けるかってレベルだから下手な非同期は足引っ張るだけじゃね?
Cとか並列でソケットを大量に保持/処理してるコードでもなかったぞ
100:デフォルトの名無しさん
16/12/02 00:44:29.48 hH98Vq+f.net
>>96
tokioとか高レイヤー過ぎて無理だろw
と思ったけど、tokioの計測サンプルないから実はそこそこの性能出てる可能性はなくもないか
101:デフォルトの名無しさん
16/12/02 00:57:56.07 vsoRl3Y/.net
futures-rsで書かれたPoCなHTTPサーバで、Javaのrapidoidにちょっと勝ってるってレベルだから……>>94と見比べる限り駄目っぽいね
URLリンク(aturon.github.io)
これをtokioで書くともうちょっと速くなっただとかなんとか……はい
URLリンク(github.com)
102:デフォルトの名無しさん
16/12/02 01:17:22.42 6QW+GvXS.net
Tokioの五人って誰だよ
@alexcrichtonと@carllercheと……@aturon?@seanmonstar?
103:デフォルトの名無しさん
16/12/02 11:47:17.94 pDCpu3xK.net
そして@leader
104:デフォルトの名無しさん
16/12/03 01:53:06.87 OSKmiXal.net
@nagase @matsuoka @yamaguchi @joshima @kok
105:ubun @kojima だろ?
106:デフォルトの名無しさん
16/12/05 00:07:20.42 YOh8FCdQ.net
Rustの短所って何がありますか?
言語を選択する上で短所を知っておきたいです。
107:デフォルトの名無しさん
16/12/05 03:16:51.77 xGw5fwKi.net
>>103
妖怪ボローチェッカに邪魔されること
108:デフォルトの名無しさん
16/12/05 08:17:32.56 EFquH9+I.net
マクロで処置出来るけど、意外と文法精査が終わってない
109:デフォルトの名無しさん
16/12/05 14:32:28.10 DNLmzaEu.net
新興言語全般に言えるが、実績とノウハウと教材と開発環境とライブラリが少ないのが短所
上でも出てるけどボローチェッカに怒られることが多いし、データ構造でもあんまり気を抜けない
110:デフォルトの名無しさん
16/12/05 16:14:34.93 xGw5fwKi.net
イテレータっぽいオブジェクトから値を1個ずつ取り出すfor文の途中で
そのイテレータ自体に読み取りアクセスできない問題って、何か回避策あるの?
他言語でXmlReaderとかHogeParserとか使う時に、そういうシチュ有るよね?
標準ライブラリのイテレータ生成メソッドがことごとく変な独自structを
戻り値にしてるのと関係あるのかな。
111:デフォルトの名無しさん
16/12/05 16:24:10.83 dF177W8B.net
途中で要素数変化してんじゃね
112:デフォルトの名無しさん
16/12/05 16:51:20.80 EFquH9+I.net
普通にボローチェッカがキレてそう
for構文が所有権持っててブロック内で所有は無理でないかね
113:デフォルトの名無しさん
16/12/05 16:54:43.02 xGw5fwKi.net
要素数は変更しないよ。
でも、現在のカーソル位置を読み取るとか、次に来る要素をpeek()とか
したい場合あるでしょ?
114:デフォルトの名無しさん
16/12/05 17:03:26.68 DNLmzaEu.net
whileとかloopを使うとか、peekの代わりに前の値を保持したりカウンタを用意するとか、不格好になるけど回避策はある
for文の中は真っ当な繰り返しだけっていう縛りがあると思えば気持ち悪さが低減できるかも
115:デフォルトの名無しさん
16/12/05 19:15:14.98 3+VMIaiU.net
木構造も舐められるインターフェイスなんでカーソル位置みたいなのを
提供しないのは理に適ってる
116:デフォルトの名無しさん
16/12/05 22:50:17.88 LCk8g+4Z.net
while let Some(item) = iter.next() {
}
なら中でpeek呼べるかと
itemがiterをborrowしてるとだめだが
117:デフォルトの名無しさん
16/12/05 22:50:53.09 dPl+aGns.net
while let便利やで
118:デフォルトの名無しさん
16/12/05 22:51:41.39 dPl+aGns.net
被ったwww
while let便利だよね
119:デフォルトの名無しさん
16/12/06 04:18:15.63 LdzuyWCm.net
>>113
while letは忘れてたわ。
でも、今回はまさにその、itemがiterをborrowしてるパターンだった。
120:デフォルトの名無しさん
16/12/07 01:56:30.98 IiMNrJPA.net
Rustって、なんでも参照でゼロコピーを達成するのが偉い風潮だけど、
その効果って、どの程度だと思う?
大雑把なマイクロベンチをすると、&strでループを回してる関数を
Stringにあえて書き換えると、処理時間が約2倍程度になる。
桁数は変わらない。
コード書く時間は半分以下になる場合有りそう。
121:デフォルトの名無しさん
16/12/07 02:24:30.49 DjbUzNNG.net
>>94で同じくゼロコストを唱うgoにボロ負けしてるくらいの効果じゃね?
唱い文句に釣られて使って、全体的にへっぽこな書き方したら言うほどでもない的な意味で
122:デフォルトの名無しさん
16/12/09 15:00:34.04 n+0GjpPi.net
>>94のベンチマークでgoのフレームワークに大差をつけられてる原因って何?
hyperがhttp/2に対応してないからとか?
123:デフォルトの名無しさん
16/12/09 18:50:36.16 JXyfLORs.net
>>119
nettyが高ランクなのを見ても、普通に言語の速度を計ってるんじゃなくて、
並列処理性能を計ってるんでしょ。
同じサイトでSmalltalkが高ランクにいるグラフを見た気がするし。
124:デフォルトの名無しさん
16/12/09 18:57:53.53 /TjG9z/N.net
prefork系は別として、ginとironの比較だとフレームワークのオーバーヘッド差分じゃない?
コード見てもそう特異なことをしてるようには見えず
125:デフォルトの名無しさん
16/12/17 07:52:38.19 5jD7BRsE.net
URLリンク(internals.rust-lang.org)
rustup 1.0.0 is out.
126:デフォルトの名無しさん
16/12/18 03:17:03.88 no0nc4ME.net
以前は、opt: Option<T>について
if let Some(v) = opt { /* ... */ }
の代わりとして
for v in opt { /* ... */ }
を使うのは気持ち悪いと思ってたんだが、英語として読むとforの方が自然なんだよな
それに気づいてからはelse節が不要なときはforばかり使うようになった
127:デフォルトの名無しさん
16/12/18 04:02:19.92 z0dqDzp7.net
Rust初心者質問させて
インストールしたけどcrate.ioからダウンロードできないみたいでcargoがこける
Githubでなんかするらしいけど何すればいいの?
128:デフォルトの名無しさん
16/12/18 04:08:36.62 no0nc4ME.net
>>124
何を使ってインストールしようとしてる?
今なら↓を使うのが一番簡単だと思う
URLリンク(www.rustup.rs)
129:デフォルトの名無しさん
16/12/18 04:10:19.20 no0nc4ME.net
「何を使ってインストールしようとしてる?」じゃなくて「何を使ってRustをインストールした?」だわ
130:デフォルトの名無しさん
16/12/18 05:29:42.61 ONLzCd75.net
>>124
cargoのエラーを貼ってくれんと何も分からん (´・c_・`)
131:デフォルトの名無しさん
16/12/18 05:37:13.59 1Hajl9YU.net
rustupはあまり関係なくね?
確かにそっちを使った方が確実ではあるだろうが
132:デフォルトの名無しさん
16/12/18 09:31:39.45 NHfwgv45.net
>>123
if let Some(a) = Some(1) と for a in Some(1) と Some(1).map(|a| {}) をrustc -Oでビルドしたらmapが一番バイナリ容量小さいか
英語的に云々はC言語の古き良き文化で気にする気ないけど、zero cost目指す的にはどれが一番良いの?
--emit=llvm-ir を読もうとしたけど数行の.rsですら読める気がしなかった:(
133:デフォルトの名無しさん
16/12/18 14:27:11.90 VFzWAIXP.net
>>124
会社とか学校とか?
だとしたらプロキシ設定が必要だった気がする。
134:デフォルトの名無しさん
16/12/19 03:58:18.07 LzkIf2kw.net
>>129
map() は遅延評価されるから、そこはforeach()だろって思ったら、
そんなメソッドは無かった。
135:デフォルトの名無しさん
16/12/19 04:02:10.67 5+NGkOeZ.net
遅延評価されるのはIterator::mapであってOption::mapは先行評価
136:デフォルトの名無しさん
16/12/20 13:32:12.10 TQft0DAu.net
>>132
効率を考えればそれが正しいのかもしれないけど、統一されてないのはダサいね
137:デフォルトの名無しさん
16/12/20 13:40:08.64 HD62Gbfy.net
mapにしてもforにしても、OptionとIteratorを視覚的に区別しづらいからそういう用途ではあまり使わない
138:デフォルトの名無しさん
16/12/20 15:40:54.59 6JjvzXZF.net
性能無視して見映えで選ぶ方がダサいと思った
forやmapがif letに比べて性能良いか知らんけど
139:デフォルトの名無しさん
16/12/20 16:08:30.40 MHiDziMA.net
持続可能な開発
三ヶ月後に見直してうんざりしないコードを
140:デフォルトの名無しさん
16/12/20 16:38:33.60 6JjvzXZF.net
rustから3ヶ月離れて再開したらborrow checkerにウンザリした
forだのmapだのは使うなら常用するものだし、これで持続しないならPGやめるよ
141:デフォルトの名無しさん
16/12/20 22:05:49.13 fp1/OlA8.net
ここでmatch派が登場!
142:デフォルトの名無しさん
16/12/20 22:12:29.27 CJ2gtWfF.net
ジャニオタか
143:デフォルトの名無しさん
16/12/20 22:16:09.38 PYFsy3LE.net
少なくともコードベース内で統一されてないと気持ち悪い
多様性は悪だわ
144:デフォルトの名無しさん
16/12/20 23:57:06.74 fp1/OlA8.net
唐突に始まるRubyディス
145:デフォルトの名無しさん
16/12/21 00:26:43.08 ej8UmSNF.net
シンタクスが気に入っただけでRustでゲームを作るのは無謀?
もちろん2Dゲームエンジンはどこかから借りてくる
146:デフォルトの名無しさん
16/12/21 00:59:31.96 C1GPbqLl.net
>>142
困難はあるけど それはC/C++と同じ程度で
無謀ってほどでもないんじゃないかな
設計を試行錯誤するのはRustのがC/C++より楽だと思う
自分は rustlang + OpenGL(GLES2.0/GLSL1.0) + SDL2 で3D書いた
URLリンク(i.imgur.com)
147:デフォルトの名無しさん
16/12/21 01:01:57.94 DAWAuc9g.net
やっぱりGCなしはいいよねということでこんなのもあるよ
URLリンク(qiita.com)
148:デフォルトの名無しさん
16/12/21 02:05:19.61 Pbl/pRNJ.net
Rust and the Future of Systems Programmingの動画シリーズ、初回は閲覧数2万越えてるのにしまいには1/10未満になってて笑う
149:142
16/12/21 12:27:04.23 ej8UmSNF.net
>>143 どうもありがとう
ハイカラならやめとけと言われるかと思ったけど、
頑張ればなんとかなりそうね
3Dスゲーっす(!)
>>144 ありがとう
やっている日本人もいるんだねぇ
150:デフォルトの名無しさん
16/12/21 12:40:43.96 kCrlwcjM.net
>>143
これのどこが3Dなんでしょう
151:デフォルトの名無しさん
16/12/21 14:53:32.77 C1GPbqLl.net
>>146
Rust人口が増えて欲しいので ぜひやってみて
>>147
『視差遮蔽マッピング/Parallax Occlusion Mapping』をやってる
子細はググって下さい
152:デフォルトの名無しさん
16/12/21 15:09:44.32 wjBBiIkf.net
目が不自由だからかな
奥行が全く感じられない
153:デフォルトの名無しさん
16/12/21 18:13:34.95 vaU6q8is.net
ゲームエンジン(ライブラリなのかな?)もあるしね
154:デフォルトの名無しさん
16/12/21 22:25:50.83 ej8UmSNF.net
C#風に
yield return someValue;
としたいんだけど、Rustのコルーチンはどうですか?
155:デフォルトの名無しさん
16/12/22 00:30:05.93 qT53/Nxx.net
>>151
Option<Item>を返すようにして while let かな
Iteratorをderiveすれば for にも渡せます
URLリンク(play.rust-lang.org)
156:デフォルトの名無しさん
16/12/22 00:42:28.78 zFwIQNSP.net
言語組み込みでは用意されていない
試してはないけど URLリンク(github.com) みたいなライブラリはある
157:デフォルトの名無しさん
16/12/22 01:50:14.99 ORYJE8lc.net
Rust触ってみた感じいいなとは思ったんだけど型理論周辺がさっぱりで
って時はどの辺から始めればいいの?やっぱり型システム入門?
158:デフォルトの名無しさん
16/12/22 04:57:42.70 zFwIQNSP.net
URLリンク(bluss.github.io)
目からウロコが落ちた
実際にこんなブレースの使い方をしているコードを見かけたら読みにくいと言ってブチギレると思うけど
159:デフォルトの名無しさん
16/12/22 13:02:02.41 y+mdv7YD.net
tcl/tk 知らんの
160:デフォルトの名無しさん
16/12/22 13:16:30.31 vR+H7QAs.net
rust/tkでも流行ってんのかとググったけどそんなことはなかった
161:デフォルトの名無しさん
16/12/22 15:25:02.24 cRDgF52C.net
Rustって、こういう構造体を返す関数作れないんだね。
struct {
file_content: String,
header: &str, // 同じ構造体インスタンスのfile_contentのスライス
}
162:デフォルトの名無しさん
16/12/22 21:30:47.90 qT53/Nxx.net
>>158
範囲情報をRangeで持っておいて、headerを関数にするのでは足りないかな?
URLリンク(play.rust-lang.org)
163:デフォルトの名無しさん
16/12/23 00:33:16.85 mdacHMN9.net
Range.cloneは何とかならぬかと試行錯誤したけど
省略表記にした所でRangeを作るには変わりないから無駄な努力だった
URLリンク(play.rust-lang.org)
元の方も考えたけど、>>158は所有者が2名になるから無理だよなぁ
164:デフォルトの名無しさん
16/12/23 06:17:00.54 6bIGT6Sw.net
Announcing Rust 1.14
URLリンク(blog.rust-lang.org)
WebAssemblyサポートですって奥さん
165:デフォルトの名無しさん
16/12/23 07:54:39.71 D+0Lwjqy.net
>>159
なるほど。
これをRustでも書けてると見るか、書けてないと見るかは微妙なところだな。
166:デフォルトの名無しさん
16/12/23 08:18:02.54 mdacHMN9.net
このインターフェース設計が生理的に気分悪いならrustは使わない方が良さそう
極標準的な手法だから、これがダメなら何も出来ないよ
167:デフォルトの名無しさん
16/12/23 15:10:42.06 6bIGT6Sw.net
ライブラリ設計において、何かの値を所有権付きで受け取って変換するような関数が失敗した場合にはErrで元の値の所有権を返すようにしておいた方が便利だよな
ただ、std::collections::HashMapとかは値を削除するときキーの所有権を返してくれないから、ある値を取り出して変換して返すような処理で失敗した時にキーの複製を用意しないといけないのが気持ち悪い
所有権を受け取る前に借用してバリデーションを走らせるという手もあるけど、それはそれでオーバーヘッドになるし
168:デフォルトの名無しさん
16/12/23 16:07:53.79 LOFIUVE3.net
気にしすぎや
169:デフォルトの名無しさん
16/12/23 19:34:18.37 efetRagZ.net
マシン語読めって話何だろうけど 所有権を手離す為のcloneって
copy on write的な最適化は期待出来ないんかね?
170:デフォルトの名無しさん
16/12/23 22:45:04.10 oLVQTEs3.net
LLVM IRのことをマシン語と表現しているのか、それとも本当に機械語を読むつもりなのか
171:デフォルトの名無しさん
16/12/24 02:20:23.19 /RBsJIky.net
そもそも所有権を手放す為のcloneって何なんだ
172:デフォルトの名無しさん
16/12/24 12:04:03.69 /RBsJIky.net
OptionにもHashMapのor_insert_with()みたいな機能があれば良いのに
173:デフォルトの名無しさん
16/12/24 12:14:13.23 XL3bxxKp.net
Optionとコレクションクラスとの統一感は無いね
174:デフォルトの名無しさん
16/12/24 16:20:09.59 dDtDlNib.net
Someだったらそのまま、Noneだったら指定のOptionを得る
ってんなら単にOption.or()でいいのではないかと
イマイチ何を実現したいのか分からんけど
175:デフォルトの名無しさん
16/12/24 16:25:11.60 /RBsJIky.net
>>171
つまりこういうことがしたい
URLリンク(play.rust-lang.org)
176:デフォルトの名無しさん
16/12/24 16:29:36.25 /RBsJIky.net
あ、間違えた方を上げちまった
where T: Copyは無視してくれ
177:デフォルトの名無しさん
16/12/24 16:47:44.72 dDtDlNib.net
unwrapだと思ってたら実はas_refだったし
immutableな取り回しじゃなくmutableな取り回しだし、、、
immutableならOptionじゃ合わないわな
そこを諦めたら既存APIで十分な気がするけど、そこがこだ
178:わりならStruct新設から始まりそう
179:デフォルトの名無しさん
16/12/24 16:56:08.78 dn0dwenj.net
unwrapのランタイムコストが気になるマン
180:デフォルトの名無しさん
16/12/24 16:59:11.50 /RBsJIky.net
>>174
self: &mut _を受け取るメソッドでself.cache的な何かを扱いたいことってない?
まあ別に、その場で書こうと思えば簡単に書ける処理だから絶対に欲しいってわけではないけど……
>>175
unsafe { mem::transmute::<_, &T>(self.as_ref()) }
181:デフォルトの名無しさん
16/12/25 01:33:20.36 P0r3EIva.net
ぶっちゃけ今のRustってC++14の機能積極的に使うのよりメリットある?
182:デフォルトの名無しさん
16/12/25 01:47:23.23 jMjv2Bym.net
borrow checkerが凶悪な所がメリット
あとはcargoが標準で色々やってくれるから、全くメリットがないこともないと思う
業務ならC++11/14を使うべきなんだろうけどさ
頑張ればsmart pointerとmakeで大体のことはフォロー出来そう
183:デフォルトの名無しさん
16/12/25 04:20:17.08 klev3clW.net
C++は何でもできるんだから、新興言語のおいしい機能を盗み取っちゃえばいいじゃん
184:デフォルトの名無しさん
16/12/25 07:43:09.19 gfQaVVC2.net
コンセプトちゃんはどうなった?
185:デフォルトの名無しさん
16/12/25 20:33:17.39 X66rp15o.net
qiitaで済まんが、↓を読むとモダンなC++を使いこなすよりもrust使う方がよっぽど楽なんじゃないか
URLリンク(qiita.com)
よく、C++の機能を全部学ぶ必要は無いよ使うとこだけ理解すればいいよ、と言う人がいるけど、
コードは書くより読む方が大変なことを失念してるんじゃないかと思う
他人のコードの読解は困難を極めますよって自白してんじゃないかと
186:デフォルトの名無しさん
16/12/25 20:35:24.70 OIpmFOQN.net
あれやろ、職場のコード規約で使用する機能を制限すれば読むのにも困らんやろ(白目)
187:デフォルトの名無しさん
16/12/25 20:50:48.74 OHOD3vvf.net
理解できない人がいるのでジェネリクスとやらは使ってはいけません
188:デフォルトの名無しさん
16/12/25 23:52:57.50 P0r3EIva.net
>>183
ジェネリクスだめならモダン言語は殆ど、ってかjavaすらダメじゃね?
189:デフォルトの名無しさん
16/12/26 00:01:48.58 mhrTCx4U.net
JavaのジェネリクスもModern Java(造語)な時期じゃないかね
C++でもboostで使われてた頃な気がする
>>181をざっくり読んだけど、C++を仕事でやってたらこれくらいは別に問題ないと思うけどな
rustみたいに数ヵ月単位で言語仕様に仕変入る方がコードの解読に困難を極めないか?
古いバージョンで固定すればいいじゃんってんなら何も言うことない
190:デフォルトの名無しさん
16/12/26 01:02:26.94 xO25f93t.net
C++は継ぎ接ぎだらけのズタボロ言語
191:デフォルトの名無しさん
16/12/26 01:32:03.49 zGEIM/Ml.net
>>183
理解できない人をチームから外せばおk
192:デフォルトの名無しさん
16/12/26 02:42:52.09 kYuQe4Wz.net
C++を貶すつもりは無いけど、ジェネリクスもコンパイル時計算もtemplate任せってのが傍から見てて怖い
templateの過剰使用のせいか、エラーメッセージが分かりにくい&バグを潰しにくいっていう印象がある
ML系言語の発展で、型システムを柔軟にすれば大抵のことは分かりやすく実現できるよって分かって、
それをつまみ食いしたrustは実はかなり分かりやすいし、勉強の資料も実は少なくない
あと、URLリンク(github.com)
で、1.0.0からLanguageの項目がどれくらい変わったか見てくと、実はほ
193:とんど変わってないよ。 マクロが結構強化されたんで、マクロを定義しまくるcrateは影響があるかもしれんね。 ただ、そういうのは大抵DSLをマクロで!っていう特殊な事例が多いんで、何したって読みづらい
194:デフォルトの名無しさん
16/12/26 03:53:18.15 o+MLW/qO.net
>>188
コンパイル時計算はconstexprでいいだろ
195:デフォルトの名無しさん
16/12/26 07:04:10.78 mhrTCx4U.net
>>188
お前がC++をよく知らないってことは分かった
使ってる言語を兎角推すのはまるでObjC信者のようだぁ
自身の言語が至上、他は総じてクソって見えるらしいな
196:デフォルトの名無しさん
16/12/26 07:45:24.49 zGEIM/Ml.net
ウィ ワント パースペクティブ。
197:デフォルトの名無しさん
16/12/26 07:59:25.35 lZ2XshJp.net
自分の使っている言語を押しまくるのはObjC信者に限ったことじゃないと思うんですが
198:デフォルトの名無しさん
16/12/26 10:11:15.89 vXnTXx4r.net
Lispは神の言語
199:デフォルトの名無しさん
16/12/26 10:21:18.47 y2AwbG3E.net
S式は神の言語
200:デフォルトの名無しさん
16/12/26 11:42:54.85 HAos+tGx.net
C++は天動説
Rustは地動説
201:デフォルトの名無しさん
16/12/26 12:14:16.16 kSu16y2+.net
ocamlだってシンプルだったのが拡張につぐ拡張で最近は結構汚くなってるし
rustだって10年20年すれば汚くなるよ
奇麗なままでいられるのはユーザー数の少ない言語だけだ
202:デフォルトの名無しさん
16/12/26 12:16:41.00 HAos+tGx.net
Dはユーザー少ないけど汚い
203:デフォルトの名無しさん
16/12/26 13:57:45.03 3l9yWhJs.net
言語仕様の拡張にRFCが必要な言語だから、無秩序に拡張できた過去の言語よりは綺麗な仕様になる圧力は高いと思う
204:デフォルトの名無しさん
16/12/26 13:58:25.74 gUp/CjQ/.net
Rustで多態やるのはenum, trait, Boxを使い分ければいいの?
205:デフォルトの名無しさん
16/12/26 15:39:49.33 kSu16y2+.net
>>198
C++のほうを見て同じことが言えるかな?
206:デフォルトの名無しさん
16/12/26 15:59:40.77 y2AwbG3E.net
Serdeがよく分からぬ
207:デフォルトの名無しさん
16/12/26 16:42:09.73 stVLD6EM.net
>>199
オブジェクト指向入門でよくある、哺乳類クラスとか、円や矩形クラスの
例(クラスツリー)を、Rustでどう表現するのか見てみたいな。
208:デフォルトの名無しさん
16/12/26 17:56:53.49 R/Xz4XyC.net
>>202
servoでDOM表現するためのコードでやっているけどなかなかえげつない実装らしい
この前あったrustのmeetupではほかの言語のやり方をそのままrustに持ち込むべきではないと言っていた
209:デフォルトの名無しさん
16/12/26 18:06:10.80 lZ2XshJp.net
そういえばクラスの継承がないのを不便に感じたことはないな
210:デフォルトの名無しさん
16/12/26 19:41:44.19 ep/odFf8.net
ていうか、Rustで nominal subtyping を再発明する理由がない
型クラスはad hoc多相を実現する仕組みだがそもそもOOのためのもんじゃない
211:デフォルトの名無しさん
16/12/26 20:36:47.57 mhrTCx4U.net
バズワードだらけで言いたいことが分からんけど
Rustでクラス継承を実現するなら、traitをツリー継承して実装すればいいってことだな!
イマドキのオブジェクト指向はツリー継承を崇めてないから自分はやらないけど
212:デフォルトの名無しさん
16/12/26 20:51:12.09 J++O7+r9.net
ツリーでない継承ってどんなん?
213:デフォルトの名無しさん
16/12/27 00:03:40.08 z3Z5XFyz.net
バズワードって何?流行の若者言葉?
214:デフォルトの名無しさん
16/12/27 02:03:02.61 SQsOUYP2.net
みんな知った風な口きくけど、誰一人としてその明確な定義を言えない言葉のこと
Web2.0とかセカイ系とか。『自分で吐いてる言葉の意味を自分で理解できていない』ような連中をのさばらせておくと発生してしまう
215:デフォルトの名無しさん
16/12/27 02:07:36.20 4L8P6HZQ.net
バズワード
buzzword
いかにも,もっともらしい専門用語。専門家や通人,仲間内が好んで用いるような言葉。
216:デフォルトの名無しさん
16/12/27 02:14:18.61 M0D6LXD2.net
結局、哺乳類クラスはどうすりゃいいわけ?
217:デフォルトの名無しさん
16/12/27 02:17:57.69 /xy3dl1q.net
哺乳類クラスなんてものを用いる設計が悪い
、というのは言い過ぎとしても、「哺乳類クラス」とかいう抽象的すぎる問題を持ってこられても議論のしようがなかったりする
現実の問題ではケースバイケースで適切な対処が異なるんだから
218:デフォルトの名無しさん
16/12/27 02:34:20.97 M0D6LXD2.net
>>212
設計がクソなのはそうかもしれないけど、世の中がJavaっぽいクラスを前提に
動いてるんだから、それを素直にコードに落とせないのはまずいよ。
DOMやGUIライブラリ(のラッパー)はそうでしょ?
219:デフォルトの名無しさん
16/12/27 03:23:41.04 VnAYfBLQ.net
オブジェクト指向な設計を、純関数型言語で実装できない!シネ!!みたいなね
traitとstructで無理矢理クラス継承を模倣すれば?
rustのお作法から外れて邪道感溢れるから出来るの分かっていても真面目に答えるヤツはここにはおらんよ(多分
220:デフォルトの名無しさん
16/12/27 03:28:37.64 zWPkbd9P.net
GObject、うっ、頭が……
221:デフォルトの名無しさん
16/12/27 04:14:04.89 4L8P6HZQ.net
>>212は>>211が本当に「哺乳類クラス」を実装したいのか問うていただけだろうに、技術的観点で批判するのでなくシネとか何とか人格攻撃するのは違うでしょうに
>>213が本当に哺乳類クラスを必要としていたのだって結果論に過ぎないのに
222:デフォルトの名無しさん
16/12/27 04:27:55.09 P0uTzVTB.net
こんなのにいちいち突っかかってたらキリが無いだろ……
この程度の揶揄を無邪気に行う奴なんて世の中にはゴマンといる
223:デフォルトの名無しさん
16/12/27 06:29:43.86 4L8P6HZQ.net
error-chainはアプリケーションで使うには便利だけど、ライブラリで使うには微妙そうだな
・Errorオブジェクトがenumじゃないから直接マッチできない(kindメソッドを介す必要があり)
・Error型にattributeを設定できない(error_chain!が吐き出すドキュメントをそのまま使わざるを得ない。ErrorKindのvariantには設定できるけど)
・backtraceクレートが動く環境でしか動かない
ライブラリが外部に露出するエラー型はやはり手動で書くのが一番無難なのかねえ……
ドキュメントを書き換えるためにラッパ型を用意するのは本末転倒だろうし
224:デフォルトの名無しさん
16/12/27 07:26:24.51 TsU75U35.net
error_chainについては以前チラ見した程度の知識しかないけど、何に使うものなのかよく分からんかったわ
println!("error: {}", e);
let mut e: &Error = &e;
while let Some(err) = e.cause() {
println!("caused by: {}", err);
e = err;
}
これじゃあかんのか?
225:デフォルトの名無しさん
16/12/27 07:55:36.77 O+RLyrRL.net
>>218
backtraceはfearureでoffにできるから、ちゃんとCargo.toml書けばOK
ドキュメント生成できないのはissue立ってたからそのうちなんとかならないかと期待してる
>>219
error-chainは複数種類のエラーをまとめて一つの型で表現するときのボイラープレートを書かなくてもよくすることが目的だから、
ソースコードが冗長になってもよいならば別に使わなくてもなんとかなる
あとは、勝手にbacktraceを作ってくれるからエラー発生時のデバッグが少し楽になるというのもある
226:デフォルトの名無しさん
16/12/27 09:20:55.40 4L8P6HZQ.net
backtraceオフにできるのか。いいことを聞いた
227:デフォルトの名無しさん
16/12/27 10:13:26.91 alTKLSSw.net
公称部分型とかアド・ホック多相がバズワード扱いされてるってこと……?
228:デフォルトの名無しさん
16/12/27 10:18:17.48 zWPkbd9P.net
>>209で主語の大きい表現がなされたせいで不穏な空気になってるだけで、実際にバズワード扱いしてるのは>>206だけだろ
その>>206もバズワードという言葉を正しく使えてるかは微妙だし
229:デフォルトの名無しさん
16/12/27 11:12:32.24 sIydEYNy.net
専門用語を使うのはいいとして>>205は何が言いたいのか分からんよ
>>208
むしろ死語かな
知らない世代がいるなら老がい用語
230:デフォルトの名無しさん
16/12/27 11:28:54.23 O+RLyrRL.net
rustでクラス階層表現する話はこの辺見るのがよいと思う
URLリンク(doc.servo.org)
231:デフォルトの名無しさん
16/12/27 13:49:54.13 /xy3dl1q.net
どちらにせよerror_chainはインターフェースの独自色が強すぎて一般向けのライブラリで使うには向かないと思うけどな
使用例を見ても、アプリケーションではrustupとかいう輝かしい例があるけどライブラリではめぼしい例もないよな?
232:デフォルトの名無しさん
16/12/27 13:57:00.38 GwCWTN18.net
今は有料になっちゃったけど、Learn C the Hard Wayっていうオンライン教材で、C言語でオブジェクト指向を作る講座を思い出す
構造体の最初のメンバに親クラスを定義すれば、キャストで親クラスになれるって手法だった
Rustでも親になる型の変数を用意して、適当なtrait、Asとか何とかを使えば作れるだろうとは思う
ただ、OOを使うべき場面ってのはダイナミックな用途に限られるんじゃないか
Trait Objectとかで大抵は事足りるはず
233:デフォルトの名無しさん
16/12/27 14:02:04.36 b9lc87EM.net
OO好きねえ……
234:デフォルトの名無しさん
16/12/27 15:30:08.41 /xy3dl1q.net
>>227
やってみた。汚い
Deref coercionとかは知らん
URLリンク(play.rust-lang.org)
235:デフォルトの名無しさん
16/12/27 15:50:42.37 sIydEYNy.net
>>229
汚くてワロタw
親構造体内包+Derefやってみたけどムリポ
メソッドオーバーロードを考えなきゃ良いんだろうけど、その場合の実用性はどうだろうね
URLリンク(play.rust-lang.org)
236:デフォルトの名無しさん
16/12/27 15:51:59.79 sIydEYNy.net
違う、オーバーロードじゃなくオーバーライドだ
237:デフォルトの名無しさん
16/12/27 16:04:44.73 M0D6LXD2.net
>>227
ServoのDOMは、基本的にそのC言語でオブジェクト指向と同じみたいだね。
mem::transmute() を使ってる。
ただ、Castable#is()で判定できるから、それを忘れなければ、より安全って感じか。
このCastableを汎用的にしたやつがcrates.ioに有れば、便利かも。
238:デフォルトの名無しさん
16/12/28 00:45:05.70 bvnjBJpz.net
関数型言語も狙うなら関数のオーバーロードあったほうがいいと思う。
239:デフォルトの名無しさん
16/12/28 10:22:40.34 33G5Uz6K.net
traitじゃ駄目なの?
型推論がある言語で関数のオーバーロード(同名で型が異なる関数の定義)ができる言語なんて今のところ無いよ
オーバーライドはOOの意味合いだしなあ
240:デフォルトの名無しさん
16/12/28 10:33:00.62 yWrP/m5t.net
>>234
>型推論がある言語で関数のオーバーロード(同名で型が異なる関数の定義)ができる言語
え?あるよね?
241:デフォルトの名無しさん
16/12/28 10:49:12.17 Pwrrr1Os.net
ライブラリを作るときは、依存してるクレートについてdefault-featuresを切っても問題ないなら切っといた方が良さそうだね
ライブラリ側が有効にしてるfeatureはユーザ側でオプトアウトできないけど、ライブラリがfeatureを無効にしていてもユーザ側でオプトインできるし
242:デフォルトの名無しさん
16/12/28 11:39:36.50 j4SHG8/A.net
冬休みだからか、すっとぼけた質問や俺得提案が多いな
243:デフォルトの名無しさん
16/12/28 12:46:13.64 zjOgRctZ.net
あると思うけど関数型言語をねらうのにオーバーロードがあった方がよいのは理由がよく分からない
244:デフォルトの名無しさん
16/12/28 13:05:53.71 /YvbcywK.net
オーバーロードよりも型クラス+カリー化の方が関数型っぽいな
245:デフォルトの名無しさん
16/12/28 13:17:11.06 yxR21hjj.net
ErlangとかJuliaとか
246:デフォルトの名無しさん
16/12/28 13:34:40.02 /YvbcywK.net
Juliaは未だにGithubで「オーバーロードを採用してしまったから部分的用できない、ではどういう記法で部分的用を短く書くか」、って揉めてなかったか?
247:デフォルトの名無しさん
16/12/28 13:41:59.93 SLz2RvoN.net
そういや、rustって、構文解析の邪魔になりそうなものは積極的に排除するイメージ。
文末のセミコロンを今時採用すると思わんかった。
248:デフォルトの名無しさん
16/12/28 14:12:42.94 AaUHlvvb.net
rustって部分適用とかカリー化とか書きやすいの?
249:デフォルトの名無しさん
16/12/28 14:27:58.88 9y3G1esR.net
Rustのセミコロンは式を文にして返り値をユニット型にする演算子だからそりゃ必要だろう
250:デフォルトの名無しさん
16/12/28 22:54:23.66 tiZ71Spt.net
ifやmatchが式なおかげで「if if let」とか「while match」とか書けるね
記述量は減るけど慣れてないとビックリしそう
あと「いふいふれっと」ってずっと言ってると
ちょっと「みこみこなーす」っぽい
251:デフォルトの名無しさん
16/12/28 23:02:02.12 6NcUzOVy.net
ぽくはない
252:デフォルトの名無しさん
16/12/28 23:57:43.05 bDO+6moT.net
>>244
蝉転んで区切るってやつか
253:デフォルトの名無しさん
16/12/29 00:08:37.19 pmAxOvWh.net
審議拒否
254:デフォルトの名無しさん
16/12/29 18:19:20.70 7bfuEKFU.net
セミコロンなくても if if let は構文解析出来るだろうけど面倒だったんだろうな
開発始めた頃はまだ末尾セミコロン死ねな風潮でもなかったろうし
255:デフォルトの名無しさん
16/12/29 19:05:08.27 pmAxOvWh.net
ま、まあECMAScriptのautomatic semicolon insertionみたいなことになるよりはマシだから……
256:デフォルトの名無しさん
16/12/30 06:51:41.42 a1QfaOpy.net
「行末セミコロン死ねな風潮」は行末セミコロン自動挿入のクソ言語のせいなんだから
「行末セミコロン死ね! だからRustも行末セミコロン自動挿入すべき!」とか意味不明の極致だろ
257:デフォルトの名無しさん
16/12/30 09:15:43.02 BAOxkPJ/.net
唐突なPythonディスに俺がブチキレ
258:デフォルトの名無しさん
16/12/30 12:52:44.59 gA9NnhXP.net
セミコロンあり無しそんなに重要か?
259:デフォルトの名無しさん
16/12/30 14:09:34.73 STL3vH6g.net
行末セミコロンはフリーフォーマットには欠かせない必要不可欠なもの
260:デフォルトの名無しさん
16/12/30 14:14:16.09 +0G7T/E5.net
なくてもなんとかなる場合もあるけど、有り無しで設計/実装の難易度はダンチよな、超重要
人間様にとっては
261:デフォルトの名無しさん
16/12/30 14:14:52.91 +0G7T/E5.net
なくてもなんとかなる場合もあるけど、有り無しで設計/実装の難易度はダンチよな、超重要
人間様にとってはASCII文字以外を変数名に使えるかどうかくらいの問題か
262:デフォルトの名無しさん
16/12/30 15:45:32.03 1LhwiS9W.net
セミコロンを忌み嫌う人はそもそもrustのborrowとかmoveとかめんどくさがって使えなさそう
263:デフォルトの名無しさん
16/12/30 16:25:30.23 Q3tvxZdg.net
;はOKだけど
PASCALやErlangみたいに
;と,と.の使い分けになったら嫌
264:デフォルトの名無しさん
16/12/31 08:20:02.34 evZQ8uAx.net
エディタで\n\rを;に表示すればいいんだ!
265:デフォルトの名無しさん
16/12/31 12:20:17.73 H5rV9I3r.net
fn main() {;
println!("hello");
};
266:デフォルトの名無しさん
16/12/31 12:28:55.47 Sym7Bg1
267:E.net
268:デフォルトの名無しさん
17/01/02 10:01:31.48 1m/cK6rN.net
セミコロンに飛びついてるのは
他のことについて語れないくらいバカな奴だけだろ。
269:デフォルトの名無しさん
17/01/02 21:18:31.68 ichN9xlo.net
唐突な人格攻撃に困惑
270:デフォルトの名無しさん
17/01/03 11:38:39.79 xKIwkl8n.net
rustc: Stabilize the `proc_macro` feature by alexcrichton · Pull Request #38783 · rust-lang/rust
URLリンク(github.com)
Macros 1.1がstabilizeされるってよ
271:デフォルトの名無しさん
17/01/03 12:02:32.26 3o9M4oho.net
きたか…!!
( ゚д゚ )
.r ヾ
|_| |_|
| | |
しノ
___ / ̄ ̄ ̄/_
\/ /
272:デフォルトの名無しさん
17/01/03 13:08:42.00 ZKRmSAM8.net
マクロのそ�らを�
273:デフォルトの名無しさん
17/01/03 18:29:20.46 4ChvZkkB.net
どこの超時空要塞?
274:デフォルトの名無しさん
17/01/03 20:40:08.40 wuUskEpB.net
RFCをざっくり読んでも具体的に何が効率的になるのか分からん
try!が?になるくらいのシンプルな例を誰か頼む
275:デフォルトの名無しさん
17/01/03 20:58:17.39 r8LUHXKe.net
> we're shooting for macros 2.0 stable in the far future
ref. 1681-macros-1.1.md
要は便利機能は2.0待ってろってことか、先は長いな
276:デフォルトの名無しさん
17/01/03 21:50:34.44 OFYBDDbH.net
分かってると思うけど2.0ってのはrustc 2.0じゃなくてMacros 2.0だからな
277:デフォルトの名無しさん
17/01/05 00:29:08.66 ZD27oJ5u.net
Serdeって何故デシリアライズされる型とdeserializeメソッドがセットになってるんだろう
MapVisitor::visit_valueでカスタムのdeserializeメソッドを使いたい場合はラッパ型を用意してDeserializeをimplするしかない?
278:デフォルトの名無しさん
17/01/05 22:10:05.44 NKDpP9qZ.net
discriminant_valueはいつになったらstabilizeされるんだ?
variantを比べるためだけにmatchして云々とかいう冗長で非効率な実装はなるべくしたくないのじゃ
279:デフォルトの名無しさん
17/01/06 00:11:35.37 Fz5LbEfZ.net
URLリンク(github.com)
Some things to nail down before stabilization:
- [x] prototype implementation
- [ ] signature needs to have a <T:Reflect> bound
- [ ] documentation should reflect the inherent instability in this value and describe valid uses
- [ ] perhaps signature should require input T to actually be an enum instance?
- [ ] do we want to adjust the return type in any way to enforce the above rules?
280:デフォルトの名無しさん
17/01/06 01:12:22.50 FrG2KJ61.net
これってコンパイラのバグ?
URLリンク(is.) gd/jWTzHJ
281:デフォルトの名無しさん
17/01/06 01:34:14.03 Fz5LbEfZ.net
どんな振る舞いを期待していたのかは知らないけど、とりあえず^は指数関数じゃなくてXORだよ
282:デフォルトの名無しさん
17/01/06 08:55:49.46 RoJjSRcN.net
Rustでもビット/シフト演算子の優先度は四則演算子よりも低いんだっけか
期待動作が分からんのでprintじゃなくassertで頼む
283:デフォルトの名無しさん
17/01/07 06:27:18.42 ZgzC+Fa4.net
256と3のXORとか謎すぎるし、^の意味を履き違えてるだけの線が�
284:Z厚な気が……
285:デフォルトの名無しさん
17/01/07 15:58:55.81 0PjiZvlV.net
うん。近年まれに見るバカだ。
286:デフォルトの名無しさん
17/01/07 16:04:59.75 ZgzC+Fa4.net
寝ぼけてた
287:デフォルトの名無しさん
17/01/07 16:57:17.26 xEA8lk8b.net
ワロタ
288:デフォルトの名無しさん
17/01/07 21:42:06.91 n2yomPvZ.net
pythonとかocamlとかjuliaとかcommon lispとか、Exploratory programmingに適した言語とrustを開発の両輪にしたいけど、
何かおすすめある?
289:デフォルトの名無しさん
17/01/08 01:03:37.13 kfDqfkDn.net
>>281
forth
290:デフォルトの名無しさん
17/01/08 01:05:56.21 PddBs9sQ.net
Exploratory programmingのために新たな言語を学び始め、開発が全く進まない未来を予知した
291:デフォルトの名無しさん
17/01/08 07:57:00.85 0mVP2hZ6.net
Erlang
292:デフォルトの名無しさん
17/01/08 08:35:33.23 23/7dWy/.net
Rust
293:デフォルトの名無しさん
17/01/10 19:06:19.84 f/pmyPVx.net
>>281
>Exploratory programming
プロトタイプ作って試行錯誤、って話ならHaskellが一番使いやすいと思う
小規模のものなら、再発明が面倒になってHaskellのプロトタイプを改善してそれでよしとする未来まで見える
遅延評価絡みでオーダーのトラップがあるのが難点だけどな
294:デフォルトの名無しさん
17/01/11 14:21:39.72 XBWH8SeE.net
ゲームしつつ片手前にドキュメントを眺める・・・Rust1時間目
let ほほう型推論か・・・コンパイラで型推論は最近の流れ?
mut ミュータブル・・・これつけないと定数ってことじゃろかよーわからん・・・
String::new() あえてnewっていうメソッドにせんでも・・・とにかく静的らしい・・・
ほほう・・・
295:デフォルトの名無しさん
17/01/11 15:07:47.36 7uyPKRK3.net
Rustと言えばゲームだね!
296:デフォルトの名無しさん
17/01/11 15:22:46.07 XBWH8SeE.net
2時間目・・・
エラーハンドリングの仕方がちょっと特殊だな・・・例外だらけの汚いコードにはならないのだろうか・・・
loopとはわかりやすいキーワードだ・・・もしかしてrustはとりあえず全部無限ループさせるのか?なわけないよな・・・
matchとはなんぞ・・・これはとても便利そうだ・・・
parse()って何に?letに型指定すればそれにってことだろうか?parseIntとかじゃなくてシンプルだな・・・
ふむふむ・・・
297:デフォルトの名無しさん
17/01/11 16:06:44.87 /IZ7nDq3.net
チラ裏
298:デフォルトの名無しさん
17/01/11 16:53:57.45 5OhI584z.net
むしろTwitter、なぜここでツィートしてるのかは不明
コテつけといて、NG入れるから
299:デフォルトの名無しさん
17/01/11 19:03:44.12 XBWH8SeE.net
触らなければよかったのに触っちゃったね
よーし今日から荒らしていくからよろしくwwwwwww
300:デフォルトの名無しさん
17/01/11 19:04:54.12 XBWH8SeE.net
まぁこんなゴミ言語よりはGoのほうがよいわな
こんなん使うのはSwiftしか使えない池沼だけ
301:デフォルトの名無しさん
17/01/11 19:06:19.76 AM+tjFEn.net
歌舞伎座.tech#13「Elixir 勉強会」
2017/01/11(水) 開場:18:57 開演:19:00 ニコニコ生放送
lv286846512
302:デフォルトの名無しさん
17/01/11 19:07:09.79 XBWH8SeE.net
ふぁーーーwww
見に行くしかないwww
303:デフォルトの名無しさん
17/01/11 19:17:33.64 XBWH8SeE.net
LL以外どこの言語にもあるスレッドがご自慢のクソ言語
劣化Scala ふぁーwww
304:デフォルトの名無しさん
17/01/11 19:43:29.93 PvND63zB.net
キチガイだ
305:デフォルトの名無しさん
17/01/11 19:43:37.85 5OhI584z.net
borrow checkerに挫折したか
学習曲線の改善は難敵よね
306:デフォルトの名無しさん
17/01/11 19:44:33.25 /IZ7nDq3.net
const fn tracking issue (RFC 911) #24111
URLリンク(github.com)
でたった今話し合われてるけど、const fnがstabilizeされたら関数にconstをいちいちくっつける作業が発生して面倒くさそう
constじゃない関数をmut fnみたいにする案もあるけどそれはそれで互換性の問題があるしなあ……
307:デフォルトの名無しさん
17/01/11 19:56:50.41 Dbl5XF86.net
Rust 2を待つしかないと
308:デフォルトの名無しさん
17/01/11 20:08:37.68 XBWH8SeE.net
出来損ない言語の末路だな
独裁者のいない寄り合い所じゃこんなもんだろwww
309:デフォルトの名無しさん
17/01/11 20:15:03.09 /IZ7nDq3.net
>>300
そう単純な問題でもないみたいで、constをくっつけるのはnon-breaking changeだけどその逆はbreakingだからconstの方をデフォルトにするのは宜しくないのでは、という議論もある
derive(Copy)とかと同様の問題。だから-W missing_copy_implementationsと同じようにopt-inなlintだけに留めるべきではとも言われている
310:デフォルトの名無しさん
17/01/15 16:47:20.62 Ib7guha6.net
>>300はrust 2でbreaking change待ちって意見だろうよ
breaking changeせずに適用したいから云々って話なんだろうけど
どう転がるにせよwarningレベルで対応を要求してくるだろうからノンビリ待とうかね
311:デフォルトの名無しさん
17/01/15 20:39:38.98 SlBKEDAf.net
マクロやプラグインでやってたことの一部がconst fnで出来るようになるんだよね、これ?
bookであったローマ数字をrn!(X)でコンパイル時に10にするようなのを、rn("X")とかに出来るってことなら嬉しい
マクロ苦手なんだ
312:デフォルトの名無しさん
17/01/15 21:12:15.99 8SgEfBB1.net
const fnは普通のfnのサブセットみたいなものだからマクロの代わりとしては微妙なような
const fn内で関数を宣言できるわけでもないし、外部スコープの変数を直接参照したりreturnできるわけでもないからなあ
313:デフォルトの名無しさん
17/01/16 01:06:39.35 3MjcRRh6.net
すべてのmacroの代替になるわけではないけど、macroやらpluginやらで無理して実現してたことの一部が楽にはなるはず
それぞれ適した用途で使えばよい
314:デフォルトの名無しさん
17/01/16 11:01:09.92 YCpRkRk0.net
inlineとmacroとpluginとconst fnと
適材適所をまとめた情報ってどこかないかね
315:デフォルトの名無しさん
17/01/18 19:26:40.80 0/He/nuF.net
const fnからpanic!出来ない仕様ってstabilizeされてからもそのままなのかな
316:デフォルトの名無しさん
17/01/19 05:46:59.43 ff1dOA50.net
>>308
そうだと思うけど
const fnからpanic!呼びたいって要求は
#[cfg(...)]みたいなattributesに置き換えられないかな
なんか考えが足りてなかったら申し訳ない
317:デフォルトの名無しさん
17/01/19 06:12:01.34 nSqYy0BF.net
attributesじゃitem単位での条件コンパイルくらいしかできないだろうから無理じゃね?
コンパイルタイムとランタイムを区別するのは現時点でのattributesの領分を越えてるでしょ
>>308の期待する動作がはっきりとは分からんが、恐らく下の擬似コードみたいなのに対応しなければならないんだろうし
これを実現するには言語仕様(あるいはプラグイン)の追加で対応するしかないんじゃないかねえ
fn main() {
const A = f(0); // expecting compile-time error
let x = f(std::env::args().skip(1).first().unwrap().parse().unwrap()); // expecting runtime panic
println!("{}, {}", A, x);
}
const fn f(n: i32) -> ! {
panic!();
}
318:デフォルトの名無しさん
17/01/19 17:50:45.29 KP9WuCCK.net
そもそもその手の機能ってC++やDですら実現されてないんじゃ……
319:デフォルトの名無しさん
17/01/22 02:14:54.25 meHWinYv.net
URLリンク(crates.io)
>If Rust the video game were implemented in Rust the programming language, it would belong in this category.
クソワロタ
320:デフォルトの名無しさん
17/01/22 15:32:04.47 He1ERbj9.net
最近はRustで検索するとゲームの方より言語の方が上位に来るようになったぞ!
321:デフォルトの名無しさん
17/01/22 15:36:25.38 Yl4nAGke.net
RustってポストC/C++になれる言語ですか?
322:デフォルトの名無しさん
17/01/22 16:37:35.24 C/30dEKV.net
単にお前さんのGoogleアカウントの検索の履歴からRust言語に重み付けされた結果が出てるだけだから
アカウント変えるとゲームの方が先にくる場合もままあるよ
> Displaying 0-0 of 0 total results
これは、、、言い出しっぺの法則やな?
323:デフォルトの名無しさん
17/01/22 19:28:06.48 eyLJuWmg.net
>>314
ポテンシャルはある。
324:デフォルトの名無しさん
17/01/22 19:40:20.56 Dd1b/Mlb.net
URLリンク(github.com)
A community-driven port of Emacs to Rust.
325:デフォルトの名無しさん
17/01/24 19:29:16.39 igHP4a7v.net
>>314
寝言は寝て言え。現状からみてD言語ルートだ。
326:デフォルトの名無しさん
17/01/24 19:53:42.15 pU9ER4NI.net
Mozillaが本気ならD言語よりはマシなんじゃね
327:デフォルトの名無しさん
17/01/24 20:42:28.51 VnBtkYVE.net
Quantumに着手してる時点で本気でないはずがない
328:デフォルトの名無しさん
17/01/24 21:24:09.97 dNkKf7mt.net
個人的なツールでちょっと使い始めたところだけど
C++テンプレート初期のエラーメッセージ地獄にくらべるとRustさん親切すぎて天使かよって感じなのでがんばってほしい
けどもうひと押し(偉いひと説得材料的な)なんかほしい気はする
329:デフォルトの名無しさん
17/01/24 23:34:50.03 iJ0FMzkO.net
>>319
Mozillaが本気出してこの程度ならD言語未満のHaskellレベルじゃね?
330:デフォルトの名無しさん
17/01/24 23:46:14.74 rMS2+V/T.net
>>313
あっちはまだアーリーアクセスだから…
331:デフォルトの名無しさん
17/01/25 00:43:42.66 uVLYflKb.net
rustとc++14ならどっちが学習コスト高いかな?
332:デフォルトの名無しさん
17/01/25 01:06:25.08 icd2X49v.net
>>324
(高コスト)C++闇の軍団>proc macroを書くRust>テンプレートを書くC++≧ビルドプラグインを書くRust>Rustさわり>C++さわり(低コスト)
現状こんなもん?
333:デフォルトの名無しさん
17/01/25 08:00:44.75 wJvgwWCY.net
国際規格みたいなのができるとしても複数の実装の事を考えると
プラグインは仕様からは外れるかなーとは思う
334:デフォルトの名無しさん
17/01/25 09:57:43.37 +ZiK5CtY.net
>>321
zero costで性能良いって売りが事実になれば...
上で上がってたウェブサービスのベンチマークが意外とガッカリ性能だったのが萎える
335:デフォルトの名無しさん
17/01/25 11:09:39.71 wJvgwWCY.net
ウェブサービスのベンチマークなんてコンパイラ云々よりも構成のほうが影響強いって上でも言われてるじゃん
とはいえアセンブリレベルでは機能制限されたC++でしかないからrustで速くできるならC++だともっと速くできるわけで
労力もC++のほうがかかるだろうけど
336:デフォルトの名無しさん
17/01/25 16:34:12.89 82yMOZoe.net
言語仕様なんだからプラグインが外れるのはむしろ当たり前かと
337:デフォルトの名無しさん
17/01/25 16:42:20.24 vaJn6hA3.net
>>322
ん、今さりげなくHaskell馬鹿にした?
338:デフォルトの名無しさん
17/01/25 17:46:06.98 G/yiP9yt.net
C++だと安全にするためにコピーしてた箇所をrustだとガンガンmoveにできるとかで、
普通に書いたらC++より早いとかあってもおかしくないとは思う
339:デフォルトの名無しさん
17/01/25 17:55:56.70 GF1+cyEf.net
C/C++は危険でも関係なくガンガンコピーするから速い
開発者が明示的にコードで安全にするか
言語が暗黙的に安全にするかの違いがあるだけで
安全なコードが吐かれてたらその分は遅くなるよ
340:デフォルトの名無しさん
17/01/25 19:05:12.07 +ZiK5CtY.net
偉い人説得のために言語仕様だけ推すわけでもなく
rustupのビルドツールセットの管理性や、cargoのビルド環境の利便性や、3rd party crateの性能なんかをまとめて
だからrustは良いんですよってプレゼンするんだよぉ
んで、公式に唱ってるわりに足引っ張ってる3rd party crateの性能が気になる
言語仕様は安全なマルチスレッドを言語文法でもうちょっと便利にして欲しいけど、グリーンスレッドに先祖帰りされても困るしのう
341:デフォルトの名無しさん
17/01/25 20:46:32.79 o52BqWk7.net
>>332
そうなんだあ
Rustって遅いんですね
342:デフォルトの名無しさん
17/01/25 21:10:53.58 G3Sy5RF2.net
コピーするから速い……?
343:デフォルトの名無しさん
17/01/25 22:08:50.44 9B/zRGmW.net
週刊誌並の偏った切り取り方
344:デフォルトの名無しさん
17/01/25 22:16:22.79 vvheTSCl.net
せやで
dereferenceは高コストな操作だからstructだろうが何だろうが参照渡しより値渡しの方が高速なんやで
345:デフォルトの名無しさん
17/01/25 22:31:03.09 rhF3V2Xc.net
めっちゃデカイ構造体コピーしたろ!
346:デフォルトの名無しさん
17/01/25 22:51:07.48 icd2X49v.net
そもそもRustで「めっちゃでかい構造体」を作るのって、どっかで設計間違ってる気がしなくもない。
347:デフォルトの名無しさん
17/01/26 01:26:45.59 QpF8cABc.net
それは作るプログラムの性質であってRust関係ないしお前が設計の良し悪しを決めるものではない
348:デフォルトの名無しさん
17/01/26 01:43:10.61 2yUJ7U50.net
Rustと言う名前のゲームがあるそうですが
それはプログラミング言語のRustで作られているのですか?
349:デフォルトの名無しさん
17/01/26 07:47:28.82 2BnY2tIN.net
>>341
その同名のゲームとは関係ない
350:デフォルトの名無しさん
17/01/26 22:36:48.11 CV+F+02K.net
コピーのコストは構造体のサイズもあるがヒープ使ってるか否かも関係するのでは
351:デフォルトの名無しさん
17/01/27 05:06:53.57 ZptWLHtZ.net
32bit時代のC#のドキュメントには、16バイトまでなら参照よりコピーした方がいい
って目安が書いてあったけど、今どきはどんなもんだろ。
352:デフォルトの名無しさん
17/01/29 05:44:52.43 OhLobWwB.net
Rustは何が新しいのか(基本的な言語機能の紹介) - いもす研 (imos laboratory)
URLリンク(imoz.jp)
こんな記事見つけた
353:デフォルトの名無しさん
17/01/29 06:53:26.90 96Ypx+6J.net
Rustは何が新しくないのか、とセットで
URLリンク(lyrical-logical.hatenablog.com)
354:デフォルトの名無しさん
17/01/29 08:24:52.66 95TVWg7i.net
つまりRustで出来てC++で出来ないことはないけど、C++で出来てRustで(コンパイラが通してくれないせいで)出来ないことはある、と。
C++でいいじゃん。Rustいらないね。
355:デフォルトの名無しさん
17/01/29 08:34:25.98 uQxwW8BY.net
何でも出来た方がいいのはチーム全員が信頼出来る場合だけだな
356:デフォルトの名無しさん
17/01/29 09:19:49.49 MpcYD/ky.net
自分自信すら信用できず、実際自業自得でバグを産むから、他人の信用なんか真っ平ごめんだ
357:デフォルトの名無しさん
17/01/29 11:26:25.73 qAZTn4yt.net
Mozilla(というかブラウザ)のメモリ関連のミスは影響がヤバいからわざわざRustまで作ってるだけで
メモリ関連ミスってもどうということはない程度のプログラムならC++でもいいんじゃない
358:デフォルトの名無しさん
17/01/29 11:29:34.14 HeP1z5CV.net
メモリ関連というよりはもっと一般的なuse-after-freeの対策も含んでると思うけどな
最近のSerde 0.9のリリースなんかはまさにそれだし
359:デフォルトの名無しさん
17/01/29 15:04:54.98 3OY0Puum.net
C++書けない無能のための言語なのに、学習曲線が断崖絶壁の無能に使えない言語に落ち着くRust。
360:デフォルトの名無しさん
17/01/29 15:12:56.27 MpcYD/ky.net
swiftスレで相手してくれる人がいなくなったからrustスレに遊びに来たのな
あっちで遊んでやんよ、お前も使ったことないrustよりまだ使えるswiftのがいいだろ?
361:デフォルトの名無しさん
17/01/29 16:05:51.17 LzV9/FyF.net
大規模なC++プログラムメンテナンスするコストに比べればrustの学習曲線なんて平原みたいなものでは
362:デフォルトの名無しさん
17/01/29 16:06:01.65 SmTDa/S0.net
自分の脳みそを完全に信用できるならな
363:デフォルトの名無しさん
17/01/29 18:28:56.50 MpcYD/ky.net
いや信用できないからrustが良いのだ
rustはエコシステムが他言語に比べてめっちゃスマートだよな
goもまぁ悪くはないけどソースファイルの置き場とか依存ライブラリの管理とかイマイチ
C/C++やSwiftはそれぞれ別の理由で論外だし
364:デフォルトの名無しさん
17/01/29 22:47:53.84 Ocx7v7z5.net
書くための敷居が低いけど、書く能力がモロにメンテナンスコストに反映されるC++と
書くための敷居が多少高いけど、だいたいはコンパイラが面倒見てくれるRust
C++で血ヘド吐いた人ほど後の方を重視して、メンテコストを軽く見る人ほど前の方を見てRust叩く印象。
365:デフォルトの名無しさん
17/01/29 23:15:06.07 NDmTx4oh.net
書くための敷居というか、入門の敷居では
慣れれば書くことに苦労することはあまりないように感じる
366:デフォルトの名無しさん
17/01/30 00:51:03.60 eF+mclkT.net
URLリンク(crates.io)
そろそろ Crate は、ジャンルごとに階層化したりタグ付けできたりソートできたりしないと発見率が糞になるかと。
367:デフォルトの名無しさん
17/01/30 02:43:56.69 YhRMpmBj.net
敷居が高いは不義理をしてあわせる顔がない時に使う
368:デフォルトの名無しさん
17/01/30 03:24:58.17 OQRcOPPf.net
へえ、ものしりだねー
369:デフォルトの名無しさん
17/01/30 07:58:57.30 nWNAE5Le.net
>>359
2000年頃のyahooみたいに?
ツリー検索をこの時代に復活させるのはないわー
370:デフォルトの名無しさん
17/01/30 19:07:27.99 bQnpSDhS.net
いくら言語を誉めたところで、この言語で書かれたまともなプロダクトも、この言語の本も出てないことが、この言語のダメさを物語っている。
371:デフォルトの名無しさん
17/01/30 19:11:49.38 rVcDTRet.net
Facebookがmercurial hgをポーティングしたって話の裏は取れたんだっけ?
372:デフォルトの名無しさん
17/01/30 19:36:00.65 nWNAE5Le.net
>>363
つ ripgrep
煽るには知識が足りてない
373:デフォルトの名無しさん
17/01/30 19:43:25.52 ako8vkN5.net
ライブラリの話ならともかく、エンドユーザ向けのプロダクトが多くないことと(エンジニアにとっての)言語の良さって関係あるの?
個々人のプロジェクトで役に立ってるのならそれで十分でしょ
374:デフォルトの名無しさん
17/01/30 21:56:25.56 7WMFgwOL.net
それ以前に仕様が固まってないじゃん。Rust
AppleのSwiftが流行らないのと同じ。
今は実験段階なんだからプロダクト数だけで言語の良し悪しは測れない。
375:デフォルトの名無しさん
17/01/30 22:33:48.94 BdTPiSFU.net
>>368
1.14にもなって言語仕様固まってないのも問題のような気がしなくもないが……
Goはまだ(?)1.7だけどももうほぼ言語仕様Fixと言っていいレベルで固まってるし。
プロダクトって面で言ったら上で出てるripgrepもそうだが、
まずFirefoxのコアに使われてる時点で「まともなプロダクトがない」って口が裂けても言えないだろ。
376:デフォルトの名無しさん
17/01/30 23:13:49.09 qF4ARhTt.net
const_fn、conservative_impl_trait、never_type、associated_consts……この話はやめよう
377:デフォルトの名無しさん
17/01/31 00:42:51.03 E22d6Q0u.net
固まるの意味が分からないがstableな機能ではまだ足りないと言っている?
378:デフォルトの名無しさん
17/01/31 01:08:37.64 lkTuVnqH.net
言語仕様に変更があったら後方互換性があってもダメというなら殆どの言語使えないよね。
何ならOKなんだ?というレベル
379:デフォルトの名無しさん
17/01/31 01:18:23.09 w/stZREj.net
C++センパイの進化について
380:デフォルトの名無しさん
17/01/31 01:57:41.10 TmvDy1Hy.net
C/C++のようにOSでもカーネルでもデバドラでも組み込みでも何にでも使える言語が良い
ユーザレイヤでしか触れない言語は価値が低い
381:デフォルトの名無しさん
17/01/31 02:04:11.12 EAnQTfF2.net
いったい何を批判しようとしてるんだ?
382:デフォルトの名無しさん
17/01/31 04:21:00.72 J6yoEKAE.net
c++でデカイプロジェクトゴリゴリ書いてた人ほどrustいいんだろうな
383:デフォルトの名無しさん
17/01/31 05:03:19.87 IQXv4KrI.net
C++はヘッダファイルに分かれてたりするのが嫌い。
Rustもモジュール周りはちょっと嫌い。
modといいつつ、実質includeが基本みたいだけど、なんだか古めかしい。
384:デフォルトの名無しさん
17/01/31 05:14:32.48 iAIegLum.net
可視性と階層構造を持つincludeとかもはやincludeじゃないよそれ
385:デフォルトの名無しさん
17/01/31 11:32:06.32 x8DMpHTc.net
>>371
単純に機能が足りてない。
conservative_impl_traitがないとアンボックス化したクロージャ返せないとか。
386:デフォルトの名無しさん
17/01/31 11:44:51.26 sCWKIGbu.net
下記のような処理で forの中で繰り返し毎にvecの変更内容を確認したかったのですが、
closureにvがmutable borrowされてるためにエラーになってしまいました。
こういうのは何か回避する方法はあるんでしょうか?
fn main() {
let mut v = vec![1, 2, 3];
{
let mut takes_nums = |x| v[0] += x;
for i in 1..3 {
takes_nums(i);
// println!("{:?}", v[0]); // ここで一時的にvの値を確認したい
}
}
println!("{:?}", v);
}
387:デフォルトの名無しさん
17/01/31 12:08:39.86 7hNNIgfe.net
モジュールもMLとかと比べてしまうと見劣りはするな
確かにC++よりはマシだけど
388:デフォルトの名無しさん
17/01/31 12:33:39.17 yyJuX8zg.net
>>379
takes_numsからきちんと返す とか
URLリンク(play.rust-lang.org)
389:デフォルトの名無しさん
17/01/31 14:03:31.13 sCWKIGbu.net
>> 381
なるほど。そうすると確かにいけますね。
390:デフォルトの名無しさん
17/01/31 15:01:08.68 16SeH9xy.net
>>379
こんなこともできる
URLリンク(fraserblog.codewise.org)
391:デフォルトの名無しさん
17/01/31 17:27:00.00 19P3vDy6.net
スライスパターンまだ?
392:デフォルトの名無しさん
17/01/31 19:31:33.91 FHFaV7L7.net
intrinsicsって何?
永遠にunstableとか書いてあるんだけど
393:デフォルトの名無しさん
17/01/31 19:50:54.86 iAIegLum.net
普通は直接触らない(libstdのstableなインターフェイスを通して使う)ものだから知らなくて良い
どうしても知る必要があるのならまずcompiler intrinsicsでググって一般的なintrinsicsについて調べてからcore::intrinsicsのドキュメントに戻ると良い
394:デフォルトの名無しさん
17/01/31 22:25:40.67 FHFaV7L7.net
コンパイラ方面の単語なのね
thx
395:デフォルトの名無しさん
17/02/01 16:47:26.59 t+0AKFTt.net
>>373
javaとかに喧嘩売ると荒れるからやめろや
396:デフォルトの名無しさん
17/02/01 18:13:30.15 UXwydrfk.net
言語に貴賤なし。プログラマに貴賤大有り
397:デフォルトの名無しさん
17/02/01 18:18:40.81 A+dqSgkk.net
無理やり荒れさすなや
398:デフォルトの名無しさん
17/02/01 22:27:21.76 swnG7r4K.net
Rcって1つのオブジェクトを色んな所から参照したいけど複数にmoveさせられない
って時にRcで包んでcloneして複数に増やして使う
内部ではcloneされてかつ生き残ってる参照の数を保持していて
0になったらリソースを解放
GC云々言われるのは一般的にこのアルゴリズムがGCでも使われているから
って認識であってる?
399:デフォルトの名無しさん
17/02/01 23:10:00.44 vXBX0LGU.net
大体合ってるよ
Weakポインターは解放の判断時にカウントされないこともお忘れなく
400:デフォルトの名無しさん
17/02/03 03:50:46.78 o3QjYKDf.net
Announcing Rust 1.15 - The Rust Programming Language Blog
URLリンク(blog.rust-lang.org)
ご存知の通りcustom deriveがstableに
それと、rustc自体のビルドシステムがRustで書き直されたとのこと
1.17からはMakefileを完全に廃止する予定で、それによってrustcを書くのにcrate.ioのパッケージを直接使えるようするための道筋か整うんだと
401:デフォルトの名無しさん
17/02/03 03:52:31.61 o3QjYKDf.net
crate .ioじゃなくてcrates.ioだわ
402:デフォルトの名無しさん
17/02/03 22:09:00.34 TA0AL/qz.net
お前らこんなめでたい日だってのに静かだな
豆でも撒いてんのか?
403:デフォルトの名無しさん
17/02/03 22:45:31.22 o3QjYKDf.net
#[derive(Throwable)]
struct Soybean;
404:デフォルトの名無しさん
17/02/03 23:15:20.66 MzXAEQdU.net
カスタムderiveは良いよね、夢広がりんぐ。
所で Rust 2.0 へのロードマップとか無いのか? 何に至れば 2.0 になるんだ?
405:デフォルトの名無しさん
17/02/04 03:35:44.48 Lsw0X+V5.net
破壊的変更をするのが2.0だけど、今のところ破壊的変更をしてまで入れたいものはあまりなさそう
406:デフォルトの名無しさん
17/02/04 04:51:36.32 KgCacN16.net
Incremental Compilation Beta - compiler - Rust Internals
URLリンク(internals.rust-lang.org)
Incremental compilationがbeta段階に達したらしい
Nightlyユーザはcargoの実行時に以下のようにしてオプトインできる:
$ CARGO_INCREMENTAL=1 cargo <command>
またはrustcを直接呼ぶ場合:
$ rustc -Zincremental=<path> <other arguments>
407:デフォルトの名無しさん
17/02/04 14:50:05.31 HGLYAiwq.net
知り合いがRust使ってサーバー書いてたんだけど、グレースフルシャットダウン?すらできないからクソだって言ってたな。
そこんところどうなってるんだろう。この言語そもそもサーバー書く言語じゃなかったりする?
408:デフォルトの名無しさん
17/02/04 18:13:59.54 bWVhQOn0.net
言語じゃなくライブラリの問題で適当なライブラリがないなら自分で書くものだ
それを自分で書けないのは自分がクソと言ってるも同義だと思うけど
そんな難しいロジックが必要でもなかろうよ > graceful shutdown
409:デフォルトの名無しさん
17/02/04 18:37:54.59 KgCacN16.net
ドキュメントを読むと、Hyper v0.11(未リリース)からgraceful shutdownに対応してる風の記述が見られる
詳細は知らん
410:デフォルトの名無しさん
17/02/04 22:15:04.50 maiRrllE.net
>>401
やっぱり言語の問題じゃないよな。
これで心置きなく発言者に甘えんなアホって言えるわサンクス。
411:デフォルトの名無しさん
17/02/05 12:21:31.45 39kPthL5.net
ところでこのRustとかいう言語、いつになったら全部のシンタックスがStableになるんだい?
それまではC++使ってるからその時になったら起こしてくれ
412:。
413:デフォルトの名無しさん
17/02/05 13:47:47.29 yZbwod3C.net
おうC++17の策定あくしろよ
414:デフォルトの名無しさん
17/02/05 13:52:10.30 1zIopPJZ.net
P0292R2のstabilizeマダー
415:デフォルトの名無しさん
17/02/05 13:57:36.06 u0uQCFq0.net
>>404が永眠してしまった、天国に行けるといいね
416:デフォルトの名無しさん
17/02/05 19:55:33.99 5xwhf5r6.net
C++0x → C++11
C++1x → C++14
C++1y → C++17
だと思ってたら違った。1xは欠番か
417:デフォルトの名無しさん
17/02/08 18:40:35.01 lAOVscE3.net
いまだにHashMapを扱う度にborrow checkerと格闘してcloneや一時変数、unwrapだらけになって辛い
自分の技術不足が恨めしい
418:デフォルトの名無しさん
17/02/09 10:17:09.71 X3gAJ9Ta.net
それはお前の技術不足じゃなくて言語の欠陥だろ。気にすんな。
419:デフォルトの名無しさん
17/02/09 11:56:02.46 LJBL065x.net
荒し乙
420:デフォルトの名無しさん
17/02/10 05:58:09.39 jFfrPWyu.net
まあマップ関連はretainの実装も放置されてる状況だしねえ(issue #1338)
ところでstableのマイナーアップデートが来てる
Announcing Rust 1.15.1 - The Rust Programming Language Blog
URLリンク(blog.rust-lang.org)
421:デフォルトの名無しさん
17/02/10 17:59:28.97 XNSQcvUK.net
RustでJVMやFlashPlayer作り直せばJavaAppletやFlashが復活するー?
422:デフォルトの名無しさん
17/02/10 18:00:49.21 hHNUUpqe.net
しなくていい
423:デフォルトの名無しさん
17/02/10 18:19:20.79 3fWDw1w5.net
現状のHashMapを普通に使って、他の言語よりmemcpyの量増える?
424:デフォルトの名無しさん
17/02/10 18:19:25.15 rXluJnty.net
しない。
それらは言語の問題ではなく、政治的な理由で消えたから。
(犯人はMSとApple)
425:デフォルトの名無しさん
17/02/10 19:00:45.32 Q2EFSTbD.net
普通に使うの定義がさっぱり分からんけど
要素操作のために、必要以上にcloneしないといけない設計/実装してるなら増えるんじゃね
cloneしなくて済むスマートな実装手法を自然に書けるようになりたい
(書けないからいつも推敲してる)
426:デフォルトの名無しさん
17/02/13 10:28:11.76 zwnL86Oa.net
とうとう火狐がRustなしではビルドできなくなるカウントダウン始まったな。
で、結局Rustはモジカスのオナニー以上でも以下でもなかった件について
427:デフォルトの名無しさん
17/02/13 10:41:16.81 wHhLxWjt.net
狂気丸出しのレスだな。
428:デフォルトの名無しさん
17/02/13 11:06:35.68 7X0vvEjV.net
オナニーレスに触るなよ悦んじゃうだろ
429:デフォルトの名無しさん
17/02/13 11:14:21.57 l/JrB4B7.net
assert!(!(Rust >= モジカスのオナニー));
assert!(!(Rust <= モジカスのオナニー));
assert!(Rust.is_nan() || モジカスのオナニー.is_nan());
430:デフォルトの名無しさん
17/02/13 11:31:22.65 7X0vvEjV.net
let cum_amt = mozilla.masturbate()
.to(Some(rust))
.duration(Duration::from_secs(30))
.finish();
431:デフォルトの名無しさん
17/02/13 11:49:18.40 zwnL86Oa.net
実際モジカスのオナニーを超える範囲で使われてるならその事例教えてくれよ。
火狐みたいなオナニーブラウザの自作自演以外でよ。
432:デフォルトの名無しさん
17/02/13 11:49:18.81 zwnL86Oa.net
実際モジカスのオナニーを超える範囲で使われてるならその事例教えてくれよ。
火狐みたいなオナニーブラウザの自作自演以外でよ。
433:デフォルトの名無しさん
17/02/13 11:56:22.97 VFoQx1wb.net
キチガイはすぐファビョって連投を始める
434:デフォルトの名無しさん
17/02/13 13:51:05.15 THrV6nDM.net
ドユコト?
やっぱりD言語の方がいいってこと?
435:デフォルトの名無しさん
17/02/13 14:39:04.19 zwnL86Oa.net
他が良いとかじゃなくてこの言語の実用性がないっていう単純な話なんだが。
これ使うくらいならC++の方が(Rustの謳い文句に反して)はるかに使いやすいしちゃんとものができる。
だからモジカスのオナニーでしかないって話。
436:デフォルトの名無しさん
17/02/13 18:36:27.18 3XLU4PQN.net
あなたに何の魅力も無いのに、あなたの主観的な評価に意味を見出だせない
実際に触ったことがある�
437:ネら「Mozillaが開発している&関係が深い」ことを評価の基、あるいはレッテル貼りに使うなんて的外れなことはしない もっとまともな批判なら相手する人もいるだろうよ
438:デフォルトの名無しさん
17/02/13 21:28:32.27 7X0vvEjV.net
ID:zwnL86OaがいくらRustを嫌おうがお前にとってのRustの有用性が変わるわけでもないんだからほっとけよ
439:デフォルトの名無しさん
17/02/13 22:11:11.49 2CyLjYwO.net
C++はツギハギだらけでダメだろ
440:デフォルトの名無しさん
17/02/13 23:19:53.96 8+uLQ/Rs.net
ひとまずRustで安全なJavaVMを作って><
441:デフォルトの名無しさん
17/02/13 23:51:37.77 g/I/A31s.net
実際Rustに不満がないわけではないが、せめてどこを改善すべきかくらい言えんのか……
個人的にはライブラリ周りがコミュニティ頼り過ぎるのもうちょい公式主導で整備できんもんかねと思う。
442:デフォルトの名無しさん
17/02/14 00:44:04.76 qahXd/u8.net
chronoの作者とかもついに音を上げちゃったしなあ
ああいうのも本来は公式が主導してしかるべきものだわな(rust-lang-deprecated/timeの代わりとして)
443:デフォルトの名無しさん
17/02/14 07:37:19.09 W2b/azRY.net
主要なものすら外部にブン投げるスタイル、面白くて好き
chronoがダメなら次が出るだろうよ
444:デフォルトの名無しさん
17/02/14 08:11:42.74 JAgDzlFN.net
音を上げたっていうののソースは?
URLリンク(users.rust-lang.org)
ここ見るとまだまだやる気に見えるが。
一人でやるの限界だからコミュニティ化したいとは書いてあるけど。
445:デフォルトの名無しさん
17/02/14 08:21:59.52 s4KAVx3x.net
世間ではそれだけで音を上げたという。
ちょっとヘルプ求めただけでも。
446:デフォルトの名無しさん
17/02/14 08:24:38.08 w7iikRzO.net
I had significant energy depletion that has prevented me to do *anything* that is not a daily jobって相当やで
実際しばらくはmerge commitばかりやってたわけだし
447:デフォルトの名無しさん
17/02/14 08:38:47.54 JAgDzlFN.net
音を上げたっていうからてっきりunmaintainedになったもんだと。
というか時刻系ライブラリまで外注とかRust流行らせる気あんのか?
448:デフォルトの名無しさん
17/02/14 08:41:04.32 JAgDzlFN.net
いや、言語のコンセプト考えるとそこはlibc叩いてなんとかせいって感じか。
449:デフォルトの名無しさん
17/02/14 09:01:28.39 MfKEp5BT.net
libcの時間系の関数ってシステム時刻の変更が影響あるものしかなくて足りなく無い?
結局clock_getimeとか環境依存のが必要になる感じ
450:デフォルトの名無しさん
17/02/14 09:29:23.11 he6YB8dM.net
きっとうるう秒が悪い
451:デフォルトの名無しさん
17/02/14 10:17:09.44 gRGlEM3t.net
Goがなんだかんだ受け入れられたのってこの手のライブラリをほとんど公式で提供してるのもでかい気がした。
452:デフォルトの名無しさん
17/02/14 10:29:11.59 DOzUz97u.net
Rust's 2017 roadmap
URLリンク(blog.rust-lang.org)
> Rust should have 1.0-level crates for essential tasks
公式もやる気を見せてるしがんばってほしいね
453:デフォルトの名無しさん
17/02/14 13:02:14.37 yamMgOVS.net
D言語ももう少し根性見せろや
454:デフォルトの名無しさん
17/02/14 13:37:21.21 EX/xGDf7.net
純粋な疑問なんだが今のRustがDに勝ててる点ってケツモチ企業がいること以外になんかあったっけ。
コミュニティ規模的にはそこまで差はないよね?
455:デフォルトの名無しさん
17/02/14 13:46:33.71 W2b/azRY.net
いつもの謎のD言語推し
何がお前をそうさせるのか
456:デフォルトの名無しさん
17/02/14 15:50:24.26 ze+N1Rxh.net
githubでfork数10倍差があるんだけどコミュニティ規模に差がないって何基準?
457:デフォルトの名無しさん
17/02/14 17:25:27.66 EX/xGDf7.net
Stackoverflowの質問数から、Rustの言語自体の難解性差っぴいてだいたい同じくらい