2ちゃんねる★スマホ版★■掲示板に戻る■全部1-最新50

プログラミング言語 Rust 2©2ch.net

1 :
2016/11/02(水) 03:12:40.30 ID:MYQ7Ohex
Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。

http://www.rust-lang.org/
https://github.com/rust-lang/rust

Servo
https://servo.org/
https://github.com/servo/servo

◆前スレ
プログラミング言語 Rust
http://echo.2ch.net/test/read.cgi/tech/1327489549/
2 :
2016/11/02(水) 03:13:34.24 ID:MYQ7Ohex
http://www.infoq.com/jp/news/2012/08/Interview-Rust
日本語版

作者Graydon Hoareへのインタビュー
http://www.infoq.com/news/2012/08/Interview-Rust

"it seems a long time ago when @sayrer and I agreed to invest in
@rustlang. But it was not, in Internet time."
https://twitter.com/BrendanEich/status/231566448017948672
3 :
2016/11/02(水) 03:15:35.56 ID:MYQ7Ohex
2016年10月31日 11時17分00秒
Firefoxを爆速化させる次世代ウェブエンジン「Project Quantum」をMozillaが発表
http://gigazine.net/news/20161031-mozilla-quantum-project/
> Mozillaから発表されたProject Quantumは、
> 同社が独自開発しているプログラミング言語「Rust」と
> 並行処理型レンダリングエンジン「Servo」をベースとしたレンダリングエンジンです。

MozillaWikiで述べられているように主な目標は(並列処理を安全に書けるRustによる)並列化の推進だな
https://wiki.mozilla.org/Quantum
>Quantum will leverage the fearless concurrency of Rust and high-performance components of Servo to bring more parallelization and GPU offloading to Firefox.
4 :
2016/11/02(水) 03:18:58.64 ID:MYQ7Ohex
Rust Language Service (RLS)
https://github.com/jonathandturner/rustls

Mozilla、Language Server Protocolを実装した「Rust Language Server」を発表
https://mag.osdn.jp/16/10/21/154500
5 :
2016/11/02(水) 03:20:31.02 ID:ttxNZg5R
Why Rust?
http://www.oreilly.com/programming/free/why-rust.csp

Contributing to Rust ・ The Rust Programming Language
https://www.rust-lang.org/en-US/contribute.html

tokioはFutureパターンによる非同期IOのためのライブラリだよ(ざっくり
解説記事:https://medium.com/@carllerche/announcing-tokio-df6bb4ddb34
解説記事:http://aturon.github.io/blog/2016/08/26/tokio/
リポジトリ:https://github.com/tokio-rs/tokio
6 :
2016/11/02(水) 03:21:47.93 ID:ttxNZg5R
Announcing Rust 1.12
https://blog.rust-lang.org/2016/09/29/Rust-1.12.html

エラーメッセージがカッコよくなってる
あとMIRが有効になって配列アクセスの境界チェックの最適化とかがより高度になってる
試してみた限りでは、get_unchecked()を使って手動で配列アクセスを最適化したりする意義がかなり薄れて来た印象
7 :
2016/11/02(水) 03:22:18.42 ID:ttxNZg5R
Announcing Rust 1.12.1
https://blog.rust-lang.org/2016/10/20/Rust-1.12.1.html
安定版では初となるpoint release
MIR関連の問題の修正が主らしい
将来のpoint releaseの予行練習的意味合いもあるだとか
8 :
2016/11/02(水) 03:23:07.37 ID:FzlbzNie
9 :
2016/11/02(水) 03:27:18.65 ID:MYQ7Ohex
LinuxのカーネルがRustで書かれればいいのに

カーネルより先に手を付けるべきとこあるからなぁ
待てない人はRedoxOS試してみたら?

まずはOpenSSLかLibreSSLのpure Rust実装からだな

TLS
https://github.com/ctz/rustls

RustってOS作れるほどのローレベル操作が出来るの?
それともC/C++みたいにアセンブルコード併記できるってだけ?

https://github.com/redox-os/redox/tree/master/kernel/asm
なんだ、アセンブルコード普通に書いてるだけか…全部Rustで作れるわけじゃないんだな
10 :
2016/11/02(水) 03:28:17.50 ID:MYQ7Ohex
最後のリンク切れてたスマソ
11 :
2016/11/02(水) 05:47:26.44 ID:ydCUsA37
>>9
それ言語の問題じゃなくデバイスドライバ関係の問題じゃないの?
OSはRustで書けるけどLinuxのデバドラ関係はハードウエア会社がCで供出してるのが多くない?
12 :
2016/11/02(水) 14:46:31.43 ID:db1quxwb
O2
13 :
2016/11/02(水) 22:26:01.78 ID:Q6z2ZaLV
-C opt-level=2
14 :
2016/11/03(木) 02:12:42.03 ID:uNlJqCt7
>>9
https://github.com/redox-os/redox/search?l=nasm
アセンブルのコードがなくなったわけじゃないのか
15 :
2016/11/06(日) 21:21:20.79 ID:jd7v1+bJ
bootloaderとその次のモード切り替えとかページングを設定するところは、マジックだらけでアセンブリ以外で書くなんて逆に面倒だよ
intermezzOS書いてる人がそこら辺丁寧に説明してる
ttps://intermezzos.github.io/book/
3.1, 3.2, 4全部あたりの内容をrustで書けるようになればアセンブリはいらなくなる
けど読めば分かるけどアセンブリで書いた方が楽だし、自分の知る限りここらへんも楽に書ける高級言語なんてC含め存在しない

rustで書けるまでに必要なアセンブリとCで書けるまでに必要なアセンブリは同じじゃないか?
これがランタイムが必須な言語とかだともう少しかかるし、Cで環境整備する必要が出てくる、はず
16 :
2016/11/07(月) 01:10:24.52 ID:MDpsc3Qw
結局はC/C++コンパイラとはオサラバ出来ないってことだな
17 :
2016/11/07(月) 01:22:23.98 ID:R+xSUJD7
18 :
2016/11/07(月) 04:18:50.54 ID:EaPQMBZD
おまいなんでこのスレにいるんだω
19 :
2016/11/07(月) 09:59:59.37 ID:VusNeGCl
最終的にはLLVMをRustで書き直す
20 :
2016/11/07(月) 15:05:06.72 ID:mwwnaA+N
cretonneかな?
21 :
2016/11/07(月) 16:35:38.47 ID:R+xSUJD7
>>20
へえ、こんなのあるのか。初めて知ったわ
てかSpiderMonkeyもoxidizeしようとしてんのか
https://github.com/stoklund/cretonne/
https://internals.rust-lang.org/t/possible-alternative-compiler-backend-cretonne/4275
22 :
2016/11/07(月) 19:10:26.42 ID:LSc5ar9N
23 :
デフォルトの名無しさん
2016/11/16(水) 02:47:56.82 ID:fzskfnoe
早漏おつ
24 :
2016/11/16(水) 09:12:58.40 ID:twfBKQax
配列使ってるとコードが as usize まみれにならない?
25 :
2016/11/16(水) 15:32:07.91 ID:1Neovnoq
>>997
YES
というかfeature-gatedな機能はみんなnightlyじゃないと使えないよ
26 :
2016/11/16(水) 20:03:41.58 ID:WS3xMITp
実は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 :
2016/11/16(水) 23:59:43.38 ID:twfBKQax
仕事でRust書いとる人いるの?
28 :
2016/11/17(木) 00:01:05.90 ID:q947Bjkq
29 :
2016/11/17(木) 02:54:48.66 ID:x6fZSDmo
メジャーバージョンアップデートでもないのに
互換性のないアップデートが続く新興言語なんてどれも実務では使えないわ
まだ遊びでいじるに留めとけ
30 :
2016/11/17(木) 03:08:24.08 ID:q947Bjkq
>>29
>互換性のないアップデート
例えば何がある?
さすがに「forward-compatibleじゃない」とか言われると参っちゃうけどさ
31 :
2016/11/17(木) 03:53:37.98 ID:PG/Ol9T0
?演算子を使ったコードがrustc 1.12.1でコンパイルこけた! 互換性落ちたRust死ね!!!
何なんだよRust。
Stability as a Deliverableじゃねーのかよ。
昨日見事にコンパイルこけたわ。
どうすんだよ私code freeze出来ねーじゃねーか。
コードを書いてメンテしてcrates.ioにpublishしてPR送ってやるって言ってるのにRust teamは何が不満なんだ?
何がpick threeだよクソ。
コード書いたはいいけど希望通りに保守するのほぼ無理だからwって言っててコード書くやつなんかいねーよ。
デグレしてもいいしCoC破るのもどうでもいいから互換性上げろよ。
Servoで何百万行無駄に使ってんだよ。
ロゴの犬とかどうでもいいから互換性上げろよ。
有名なエンジニアに払う金あるなら互換性上げろよ。
どうすんだよコーディングやめなくちゃならねーだろ。
ふざけんなRust。
互換性上げられないならバージョン0.xにしろよ。
互換性も上げられないしmajor ver.も0に戻せないけどergonomicsなんとかしたいんだよねーってそんなムシのいい話あるかボケ。
Rust teamがコード書かせないでどうすんだよ。
金があればコード書くってやつがゴマンといるんだから取り敢えず金出すかコーディングにかかる費用全てを無償にしろよ。
デグレしたりCoC破ったりTRPL作ってるやつ見繕ってMozilla職員を半分位クビにすりゃ財源作れるだろ。
まじいい加減にしろRust。
32 :
2016/11/17(木) 04:29:22.06 ID:q947Bjkq
何でCarol Nichols氏クビにするの!?
33 :
2016/11/17(木) 07:39:11.93 ID:gs7Dk9ts
えっ後方互換守ってるならsemver的にも1.xだよ
前方互換だとライブラリにも言語にも何一つ追加出来ないじゃん

なんで ? 演算子を使ったコードを1.12.1でコンパイルする羽目になったんだろうね
外部ライブラリ? 早速移行してる奴があるのかな
34 :
2016/11/17(木) 07:41:12.65 ID:gs7Dk9ts
バージョン指定してないならお前が悪い、minorバージョン上げずに?演算子導入してたらその作者が悪い
35 :
2016/11/17(木) 08:58:28.37 ID:lS45HIXq
>>31
これはネタじゃないの?
36 :
2016/11/17(木) 09:19:37.76 ID:TWtGx4vL
この前Rust開発チームを辞めた二人とも、AppleのSwiftチームに引き抜かれてたのか
この裏切り者めw
37 :
2016/11/17(木) 15:25:43.74
>>31
保育園落ちた日本死ね!!!
何なんだよ日本。
一億総活躍社会じゃねーのかよ。
昨日見事に保育園落ちたわ。
どうすんだよ私活躍出来ねーじゃねーか。
子供を産んで子育てして社会に出て働いて税金納めてやるって言ってるのに日本は何が不満なんだ?
何が少子化だよクソ。
子供産んだはいいけど希望通りに保育園に預けるのほぼ無理だからwって言ってて子供産むやつなんかいねーよ。
不倫してもいいし賄賂受け取るのもどうでもいいから保育園増やせよ。
オリンピックで何百億円無駄に使ってんだよ。
エンブレムとかどうでもいいから保育園作れよ。
有名なデザイナーに払う金あるなら保育園作れよ。
どうすんだよ会社やめなくちゃならねーだろ。
ふざけんな日本。
保育園増やせないなら児童手当20万にしろよ。
保育園も増やせないし児童手当も数千円しか払えないけど少子化なんとかしたいんだよねーってそんなムシのいい話あるかよボケ。
国が子供産ませないでどうすんだよ。
金があれば子供産むってやつがゴマンといるんだから取り敢えず金出すか子供にかかる費用全てを無償にしろよ。
不倫したり賄賂受け取ったりウチワ作ってるやつ見繕って国会議員を半分位クビにすりゃ財源作れるだろ。
まじいい加減にしろ日本。
38 :
2016/11/17(木) 16:06:27.38 ID:A0HGbkef
>>35
ネタだという点を引いてもツッコミ所が……
39 :
2016/11/17(木) 16:08:52.05 ID:q947Bjkq
>>36
https://internals.rust-lang.org/t/rust-team-alumni/3784
>They got jobs that prevent them contributing.
迂遠な言い回しをなさることで
てかNomiconどうすんだろう? Beingessner氏がいなくなってから全然進んでないじゃん
40 :
2016/11/17(木) 16:34:09.37 ID:A0HGbkef
今書かれてる新TRPL(rust-lang.github.io/book/)が完成してからとかになりそうだなー
ただクラブニク氏やゴルディング氏がその辺の記事書けるかどうか……
どちらも言語やライブラリの開発に関わってないし
41 :
2016/11/17(木) 18:55:40.39 ID:Drbt4+cn
Rustに貢献することがAppleへの転職活動になるなら、
それを期待して気合い入れてやる人も増えるだろうし、
1ユーザー的には、よろしいんじゃございませんか
42 :
2016/11/17(木) 19:00:40.42 ID:Pl+03tlF
日本人は低レベル云々とか言い出すから良くないんだな
海外ではその辺まとめてシステムプログラミングと呼ぶことで平和になってる
43 :
2016/11/17(木) 20:24:03.49 ID:lS45HIXq
外国人はシステムプログラミング云々とか言い出すから良くないんだな
国内ではその辺分けて低レベルと呼ぶことで考察/議論してる
44 :
2016/11/17(木) 20:25:33.13 ID:lS45HIXq
テキトーなラベリングやグルーピングで海外ageとか欧米か
45 :
2016/11/17(木) 21:18:21.62
低レベルと言うとナイーブな人がショボいんだと勘違いしかねないので損な言い方だ
46 :
2016/11/17(木) 21:31:41.19 ID:Drbt4+cn
下層プログラミング
ローレベルプログラミング
47 :
2016/11/17(木) 21:51:27.83
基幹レイヤーとか横文字混ぜつつそれっぽくすれば煙にまける
48 :
デフォルトの名無しさん
2016/11/17(木) 22:41:13.69 ID:TglxajGy
昔はREPLが公式のリポジトリに入ってたみたいだけどなんで消されたの?
https://github.com/murarth/rusti
なんかこれは開発止まってるみたいだし。
REPLあったら便利なのに。
49 :
2016/11/17(木) 22:53:18.85 ID:q947Bjkq
Miriのreportでfuture projectとしてREPLの話が触れられているけど、今どうなってるのかは知らん
50 :
2016/11/17(木) 23:04:57.14 ID:Xpn3XiCU
一行毎にコードを累積していって毎回コンパイル・再実行するようなもので
まともに動く感じじゃなかったし
誰も使わずメンテもされず放置されて結局消された
51 :
デフォルトの名無しさん
2016/11/18(金) 00:19:24.79 ID:7Bhmrgzh
もうrustも頭打ちだな。資金力的にも限界か?
こりゃ早々にswiftに流れた方がいいんでない?
52 :
2016/11/18(金) 00:19:48.50 ID:8Vgx8rP9
おっ、ようやくマクロが#[macro_use]の代わりに普通にuse出来るようになるのか
53 :
2016/11/18(金) 00:29:13.23 ID:eBWh43b3
54 :
2016/11/18(金) 00:31:08.99 ID:oLAPaOst
55 :
2016/11/18(金) 01:03:00.53 ID:E7bW9eot
>>53
ぱっと見Rustユーザと共鳴するような要素がなさそうに見えるんだが
FAQを流し読んだだけだけど
56 :
2016/11/18(金) 01:14:06.04 ID:oLAPaOst
>>55
Ponyとかはどうだろう?
http://www.ponylang.org/
57 :
2016/11/18(金) 10:17:38.16 ID:t+31LzEv
AdventCalendarでtokio触ろうとしてる人居るけど、あれ12月までに安定するかねぇ
大幅な改造の途中なので厳しいかも
58 :
2016/11/18(金) 12:23:03.10 ID:Mjcgtpxv
整数型の暗黙のアップキャストが無いのは不便じゃない?
前にも書いたけど、配列のインデックスで as usize を頻繁に書かされてつらい。

実行効率的には、同じ処理をC言語で書いた時も、size_tへの
暗黙のアップキャスト処理が入るのかな? 意識してなかったけど。
59 :
2016/11/18(金) 15:05:29.01 ID:ujW5dFKb
移植性がRust的には問題なのかなぁ
as usize は環境によってはダウンキャストかもしれないじゃん
今の所明確なポリシーはないが、例えば usize == u8 という環境への移植性も考えて
impl From<u16> for usize が存在しなかったりするし (https://github.com/rust-lang/rfcs/issues/1748)

個人的にそんなにキャストが必要になった記憶は無いんだけど
対策するとしたら、こんな感じでVecのラッパを書くとか
https://play.rust-lang.org/?gist=17c0c0ab946046a5670d78a5ac821a73&version=stable&backtrace=2
60 :
デフォルトの名無しさん
2016/11/18(金) 15:59:29.27 ID:vbdBJsNN
>>31
firefoxをdisりたいならあっちで
61 :
2016/11/18(金) 17:11:13.69 ID:oLAPaOst
'static [T; 0x100]の添え字としてu8を突っ込むことは割とよくあるから、そこだけでも暗黙の変換をして欲しいと思ったりする
impl<T,U,Idx> Index<T> for U where T: Into<Idx>, U: Index<Idx>
を公式に実装したら何か問題があるのだろうか?
過去に誰かしら議論してそうなもんだけど、それっぽいものが見つからない
62 :
2016/11/18(金) 18:48:56.40 ID:JDsTmOFu
定型処理用は演算子になるのか。
@演算子はどんな処理を担うのかしらん。
63 :
2016/11/18(金) 18:57:53.19 ID:ujW5dFKb
どこかのスライドで &'static str とするべき所 'static str と書かれてたが
この'staticは参照に対するパラメータなんだよな、切るとすれば &'static / str

例えば [i32; 0x100] とか自体は [i32; 0x100]: 'static 以外のライフタイムを持たない
束縛した変数や借用に初めて寿命が付く

>>61
今のRustだと追加できなさそう
(T: Into<T> なので、他の impl Index<某> for 何がし と衝突する)
それ以上にRustコミュニティの暗黙の変換の類に対する反感が大きいっぽいという問題があるけど
64 :
2016/11/18(金) 18:59:11.49 ID:ujW5dFKb
T が非 'static のライフタイムパラメータを含まないなら T: 'static、で合ってるっけ
65 :
2016/11/18(金) 21:18:08.74 ID:Mjcgtpxv
配列インデックスの件、ググってたらこれが理由とする書き込みがあったんだが、
正直、意味わからん。
ループカウンタがレジスタサイズと異なるとおかしい事になるって感じ?
https://gist.github.com/rygorous/e0f055bfb74e3d5f0af20690759de5a7
66 :
2016/11/18(金) 21:34:00.80 ID:aJxYJn23
>>56
なんか思想的に、グリーンスレッドが存在したりしてた頃のRustみたいだな
67 :
2016/11/21(月) 10:14:06.26 ID:1EpFjc3X
小さなツールを作ってみてJava版より数割遅かったんだけど、
プロファイラで調べてみたら、どうやらmalloc/freeに相当する処理が
遅いことが分かった
68 :
2016/11/21(月) 10:48:44.85 ID:kg262VVv
malloc/free実装者を断頭台へ!
69 :
2016/11/21(月) 10:53:20.16 ID:cW+sH+/p
70 :
2016/11/21(月) 11:43:08.65 ID:0HSHfyI4
JVMはひまにならないとfree処理しないから
なんか普通に負けそう
71 :
2016/11/21(月) 12:17:15.89 ID:goLgdzFN
足りなくなった時も free するから
常に忙しいときに限って free するハメになるのが実態
72 :
デフォルトの名無しさん
2016/11/21(月) 12:22:33.26 ID:gVIfBZaZ
おまいらの部屋と一緒だな
73 :
2016/11/21(月) 12:30:45.34 ID:cW+sH+/p
ちっ……ちげえし……
74 :
2016/11/21(月) 12:32:42.35 ID:1EpFjc3X
>>67
少し補足すると、JITコンパイラが効き始める10ループ目ぐらいまでは
Rustの方が速かった
75 :
2016/11/21(月) 12:38:17.81 ID:0HSHfyI4
>>71
そりゃ設計悪いだろ
そういう時はランタイム(GC)特性を気遣って設計しろw

小さなツールならGC回りまくることもなかろう
そうなると常時free処理するGCなし言語の方が不利だわ
76 :
2016/11/21(月) 12:49:34.69 ID:cW+sH+/p
小さなツールならVM起動のオーバーヘッドのあるJavaの方が何でもない
77 :
2016/11/21(月) 12:52:14.62 ID:2S9X8Lpw
>>72
鋭すぎ
78 :
2016/11/21(月) 12:54:12.88 ID:h2bcMzRZ
突き刺さる
79 :
2016/11/21(月) 13:53:31.49 ID:cBdbCQ89
>>76
プログラムが小さいとVM起動のオーバーヘッドはほぼ無視できる
80 :
2016/11/21(月) 14:12:07.49 ID:0HSHfyI4
逆でないか、JVM立ち上げでGCスレッド、メインスレッド等々の初期化で結構時間かかるぞ
ソフトウエア全体の処理が大きいと誤差に収まるけど
今回はalloc/freeがネックって言ってるから、そこは計測時間に入ってないと推測

ループ開始から終了までとSystem.gc呼んでの強制GCまでを計測したら、トントンないしRustのが早いってことになって欲しい(希望
それでもRustのが遅いなら断首台へ
81 :
2016/11/21(月) 16:38:54.33 ID:cBdbCQ89
>>80
逆ではない
プログラムが小さいとは書いたがプログラムの演算量が小さいとは言っていない
ツールが小さくてライブラリをあんまり読み込まなくていい時はJVMの初期化なんて誤差
82 :
2016/11/21(月) 16:49:33.16 ID:OhDwUouz
んん?
GCが回りまくらないような、演算量の小さなツールの話じゃなかったか?
83 :
2016/11/21(月) 16:54:29.52 ID:cW+sH+/p
アレや、プログラムは小さいけど演算量が大きくてなおかつGCが回るほどヒープを消費しないアレや
例がパッと思いつかないけど、プリミティブ型ばかり処理してれば当てはまるんじゃない?
84 :
2016/11/21(月) 16:56:10.15 ID:cW+sH+/p
>>83
いや待て、自己レスになるけど、それじゃあRustでもfreeは発生しないわ
85 :
2016/11/22(火) 06:33:32.35 ID:vdf1OFJq
昨日、Rustの初心者向けイベントがあったらしいね。
検索してみると、100人ぐらい集まったみたい。
初心者向けのはずなのに何故か難しい、って感想の人が多い。
あと、拠点を作っても外人に襲撃されて奪われるらしい。
86 :
デフォルトの名無しさん
2016/11/26(土) 11:52:46.03 ID:S9oyLAu3
Mozillaってところが不安要因だな・・・
87 :
2016/11/26(土) 15:33:02.63 ID:T6V/AejO
crate logを使うと実行ファイルにビルド環境のフルパスが埋め込まれるのがモニョッとする
自分で使わなくても依存してるライブラリもあるし
専用のビルド環境作るか、そもそもソースで配布するかしないと
配布バイナリにユーザ名を埋め込んじゃうよぅ
88 :
2016/11/26(土) 15:53:47.96 ID:GTqt9DX8
PR出して直してくれ
89 :
2016/11/28(月) 23:43:32.36 ID:NwIkJeSB
>>87
確認してみたけど、logで使われてるmodule_path!() はcargoディレクトリ以下の
相対パスしか入らないから、ユーザ名は入らない。

但し、logと無関係にデバッグ情報としてフルパスが入る場合はある。
Linux版はdebugビルドでのみフルパスが入る。
Windows(MSVC ABI)版は、releaseビルドでも.pdbファイルへのフルパスが入る。
stripすれば消えるんじゃない?
90 :
2016/11/29(火) 18:41:45.92 ID:8U8Bj8BQ
>>89
確認、ありがとう
調べ直したところcrate logのみに依存した場合、フルパスは存在せず
おっしゃるとおりlogは無罪 お騒がせしました

以下、環境は Linux / i686, x86_64 / stable 1.13.0 /
91 :
2016/11/29(火) 18:44:01.08 ID:8U8Bj8BQ
途中で切れてしまったので再掲

以下、環境は 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による差異なのか自分には判別できませんでした

以上、単なる状況報告ながら、一報まで 長文お目汚し失礼しました
92 :
2016/11/29(火) 20:05:45.86 ID:5ToPonfe
env_loggerでもやっぱりフルパスは入らないと思うけど、
それはともかく、env_loggerは依存ライブラリが多すぎて
リビルドが重くなるから嫌い。正規表現はオプション機能でいいのに。
93 :
2016/11/29(火) 21:38:40.43 ID:ejQm3rha
>>92
regexはoptionalだからdefault-features = falseで外せるとは思うけど
94 :
2016/12/01(木) 23:59:57.63 ID:dyH4Mas/
これ見ると意外とRustのウェブフレームワークって重たいのなorz
ttps://www.techempower.com/benchmarks/#section=data-r13&hw=ph&test=plaintext

上位に上がってるのはガチで速度だけを追求したLightWeightなフレームワークだからなんだけど
Rust製の速度を突き詰めたフレームワークが欲しいと思った今日この頃
95 :
2016/12/02(金) 00:25:33.03 ID:MHSZZ/vj
現状のRust産フレームワークは非同期処理とかまともにできてないからなあ
96 :
2016/12/02(金) 00:37:52.17 ID:vsoRl3Y/
その辺りはきっとtokioの五人が何とかしてくれるさ……
97 :
2016/12/02(金) 00:39:42.77 ID:hH98Vq+f
per secでどれだけ捌けるかってレベルだから下手な非同期は足引っ張るだけじゃね?
Cとか並列でソケットを大量に保持/処理してるコードでもなかったぞ
98 :
2016/12/02(金) 00:44:29.48 ID:hH98Vq+f
>>96
tokioとか高レイヤー過ぎて無理だろw
と思ったけど、tokioの計測サンプルないから実はそこそこの性能出てる可能性はなくもないか
99 :
2016/12/02(金) 00:57:56.07 ID:vsoRl3Y/
futures-rsで書かれたPoCなHTTPサーバで、Javaのrapidoidにちょっと勝ってるってレベルだから……>>94と見比べる限り駄目っぽいね
http://aturon.github.io/blog/2016/08/11/futures/#zero-cost
これをtokioで書くともうちょっと速くなっただとかなんとか……はい
https://github.com/tokio-rs/tokio-minihttp/blob/c88742e2215eabd13ed33d187fc0ba205e50f362/README.md
100 :
2016/12/02(金) 01:17:22.42 ID:6QW+GvXS
Tokioの五人って誰だよ
@alexcrichtonと@carllercheと……@aturon?@seanmonstar?
101 :
2016/12/02(金) 11:47:17.94 ID:pDCpu3xK
そして@leader
102 :
デフォルトの名無しさん
2016/12/03(土) 01:53:06.87 ID:OSKmiXal
@nagase @matsuoka @yamaguchi @joshima @kokubun @kojima

だろ?
103 :
2016/12/05(月) 00:07:20.42 ID:YOh8FCdQ
Rustの短所って何がありますか?
言語を選択する上で短所を知っておきたいです。
104 :
2016/12/05(月) 03:16:51.77 ID:xGw5fwKi
>>103
妖怪ボローチェッカに邪魔されること
105 :
2016/12/05(月) 08:17:32.56 ID:EFquH9+I
マクロで処置出来るけど、意外と文法精査が終わってない
106 :
2016/12/05(月) 14:32:28.10 ID:DNLmzaEu
新興言語全般に言えるが、実績とノウハウと教材と開発環境とライブラリが少ないのが短所
上でも出てるけどボローチェッカに怒られることが多いし、データ構造でもあんまり気を抜けない
107 :
2016/12/05(月) 16:14:34.93 ID:xGw5fwKi
イテレータっぽいオブジェクトから値を1個ずつ取り出すfor文の途中で
そのイテレータ自体に読み取りアクセスできない問題って、何か回避策あるの?

他言語でXmlReaderとかHogeParserとか使う時に、そういうシチュ有るよね?
標準ライブラリのイテレータ生成メソッドがことごとく変な独自structを
戻り値にしてるのと関係あるのかな。
108 :
デフォルトの名無しさん
2016/12/05(月) 16:24:10.83 ID:dF177W8B
途中で要素数変化してんじゃね
109 :
2016/12/05(月) 16:51:20.80 ID:EFquH9+I
普通にボローチェッカがキレてそう
for構文が所有権持っててブロック内で所有は無理でないかね
110 :
2016/12/05(月) 16:54:43.02 ID:xGw5fwKi
要素数は変更しないよ。
でも、現在のカーソル位置を読み取るとか、次に来る要素をpeek()とか
したい場合あるでしょ?
111 :
2016/12/05(月) 17:03:26.68 ID:DNLmzaEu
whileとかloopを使うとか、peekの代わりに前の値を保持したりカウンタを用意するとか、不格好になるけど回避策はある
for文の中は真っ当な繰り返しだけっていう縛りがあると思えば気持ち悪さが低減できるかも
112 :
2016/12/05(月) 19:15:14.98 ID:3+VMIaiU
木構造も舐められるインターフェイスなんでカーソル位置みたいなのを
提供しないのは理に適ってる
113 :
2016/12/05(月) 22:50:17.88 ID:LCk8g+4Z
while let Some(item) = iter.next() {
}
なら中でpeek呼べるかと
itemがiterをborrowしてるとだめだが
114 :
2016/12/05(月) 22:50:53.09 ID:dPl+aGns
while let便利やで
115 :
2016/12/05(月) 22:51:41.39 ID:dPl+aGns
被ったwww
while let便利だよね
116 :
2016/12/06(火) 04:18:15.63 ID:LdzuyWCm
>>113
while letは忘れてたわ。
でも、今回はまさにその、itemがiterをborrowしてるパターンだった。
117 :
2016/12/07(水) 01:56:30.98 ID:IiMNrJPA
Rustって、なんでも参照でゼロコピーを達成するのが偉い風潮だけど、
その効果って、どの程度だと思う?

大雑把なマイクロベンチをすると、&strでループを回してる関数を
Stringにあえて書き換えると、処理時間が約2倍程度になる。
桁数は変わらない。
コード書く時間は半分以下になる場合有りそう。
118 :
2016/12/07(水) 02:24:30.49 ID:DjbUzNNG
>>94で同じくゼロコストを唱うgoにボロ負けしてるくらいの効果じゃね?
唱い文句に釣られて使って、全体的にへっぽこな書き方したら言うほどでもない的な意味で
119 :
デフォルトの名無しさん
2016/12/09(金) 15:00:34.04 ID:n+0GjpPi
>>94のベンチマークでgoのフレームワークに大差をつけられてる原因って何?
hyperがhttp/2に対応してないからとか?
120 :
2016/12/09(金) 18:50:36.16 ID:JXyfLORs
>>119
nettyが高ランクなのを見ても、普通に言語の速度を計ってるんじゃなくて、
並列処理性能を計ってるんでしょ。
同じサイトでSmalltalkが高ランクにいるグラフを見た気がするし。
121 :
2016/12/09(金) 18:57:53.53 ID:/TjG9z/N
prefork系は別として、ginとironの比較だとフレームワークのオーバーヘッド差分じゃない?
コード見てもそう特異なことをしてるようには見えず
122 :
2016/12/17(土) 07:52:38.19 ID:5jD7BRsE
123 :
2016/12/18(日) 03:17:03.88 ID:no0nc4ME
以前は、opt: Option<T>について
if let Some(v) = opt { /* ... */ }
の代わりとして
for v in opt { /* ... */ }
を使うのは気持ち悪いと思ってたんだが、英語として読むとforの方が自然なんだよな
それに気づいてからはelse節が不要なときはforばかり使うようになった
124 :
2016/12/18(日) 04:02:19.92 ID:z0dqDzp7
Rust初心者質問させて
インストールしたけどcrate.ioからダウンロードできないみたいでcargoがこける
Githubでなんかするらしいけど何すればいいの?
125 :
2016/12/18(日) 04:08:36.62 ID:no0nc4ME
>>124
何を使ってインストールしようとしてる?
今なら↓を使うのが一番簡単だと思う
https://www.rustup.rs/
126 :
2016/12/18(日) 04:10:19.20 ID:no0nc4ME
「何を使ってインストールしようとしてる?」じゃなくて「何を使ってRustをインストールした?」だわ
127 :
2016/12/18(日) 05:29:42.61 ID:ONLzCd75
>>124
cargoのエラーを貼ってくれんと何も分からん (´・c_・`)
128 :
2016/12/18(日) 05:37:13.59 ID:1Hajl9YU
rustupはあまり関係なくね?
確かにそっちを使った方が確実ではあるだろうが
129 :
2016/12/18(日) 09:31:39.45 ID:NHfwgv45
>>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ですら読める気がしなかった:(
130 :
デフォルトの名無しさん
2016/12/18(日) 14:27:11.90 ID:VFzWAIXP
>>124
会社とか学校とか?
だとしたらプロキシ設定が必要だった気がする。
131 :
2016/12/19(月) 03:58:18.07 ID:LzkIf2kw
>>129
map() は遅延評価されるから、そこはforeach()だろって思ったら、
そんなメソッドは無かった。
132 :
2016/12/19(月) 04:02:10.67 ID:5+NGkOeZ
遅延評価されるのはIterator::mapであってOption::mapは先行評価
133 :
2016/12/20(火) 13:32:12.10 ID:TQft0DAu
>>132
効率を考えればそれが正しいのかもしれないけど、統一されてないのはダサいね
134 :
2016/12/20(火) 13:40:08.64 ID:HD62Gbfy
mapにしてもforにしても、OptionとIteratorを視覚的に区別しづらいからそういう用途ではあまり使わない
135 :
2016/12/20(火) 15:40:54.59 ID:6JjvzXZF
性能無視して見映えで選ぶ方がダサいと思った
forやmapがif letに比べて性能良いか知らんけど
136 :
2016/12/20(火) 16:08:30.40 ID:MHiDziMA
持続可能な開発

三ヶ月後に見直してうんざりしないコードを
137 :
2016/12/20(火) 16:38:33.60 ID:6JjvzXZF
rustから3ヶ月離れて再開したらborrow checkerにウンザリした
forだのmapだのは使うなら常用するものだし、これで持続しないならPGやめるよ
138 :
2016/12/20(火) 22:05:49.13 ID:fp1/OlA8
ここでmatch派が登場!
139 :
2016/12/20(火) 22:12:29.27 ID:CJ2gtWfF
ジャニオタか
140 :
2016/12/20(火) 22:16:09.38 ID:PYFsy3LE
少なくともコードベース内で統一されてないと気持ち悪い
多様性は悪だわ
141 :
2016/12/20(火) 23:57:06.74 ID:fp1/OlA8
唐突に始まるRubyディス
142 :
2016/12/21(水) 00:26:43.08 ID:ej8UmSNF
シンタクスが気に入っただけでRustでゲームを作るのは無謀?
もちろん2Dゲームエンジンはどこかから借りてくる
143 :
2016/12/21(水) 00:59:31.96 ID:C1GPbqLl
>>142
困難はあるけど それはC/C++と同じ程度で
無謀ってほどでもないんじゃないかな
設計を試行錯誤するのはRustのがC/C++より楽だと思う

自分は rustlang + OpenGL(GLES2.0/GLSL1.0) + SDL2 で3D書いた
ttp://i.imgur.com/SrBiFHe.gif
144 :
2016/12/21(水) 01:01:57.94 ID:DAWAuc9g
やっぱりGCなしはいいよねということでこんなのもあるよ
http://qiita.com/Pctg-x8/items/cbf8c8bb5e8825ba715a
145 :
2016/12/21(水) 02:05:19.61 ID:Pbl/pRNJ
Rust and the Future of Systems Programmingの動画シリーズ、初回は閲覧数2万越えてるのにしまいには1/10未満になってて笑う
146 :
2016/12/21(水) 12:27:04.23 ID:ej8UmSNF
>>143 どうもありがとう
ハイカラならやめとけと言われるかと思ったけど、
頑張ればなんとかなりそうね
3Dスゲーっす(!)

>>144 ありがとう
やっている日本人もいるんだねぇ
147 :
2016/12/21(水) 12:40:43.96 ID:kCrlwcjM
>>143
これのどこが3Dなんでしょう
148 :
2016/12/21(水) 14:53:32.77 ID:C1GPbqLl
>>146
Rust人口が増えて欲しいので ぜひやってみて

>>147
『視差遮蔽マッピング/Parallax Occlusion Mapping』をやってる
子細はググって下さい
149 :
2016/12/21(水) 15:09:44.32 ID:wjBBiIkf
目が不自由だからかな
奥行が全く感じられない
150 :
2016/12/21(水) 18:13:34.95 ID:vaU6q8is
ゲームエンジン(ライブラリなのかな?)もあるしね
151 :
2016/12/21(水) 22:25:50.83 ID:ej8UmSNF
C#風に
yield return someValue;
としたいんだけど、Rustのコルーチンはどうですか?
152 :
2016/12/22(木) 00:30:05.93 ID:qT53/Nxx
>>151
Option<Item>を返すようにして while let かな
Iteratorをderiveすれば for にも渡せます

https://play.rust-lang.org/?gist=a34273a2dac65be75e921efd34c6401c
153 :
2016/12/22(木) 00:42:28.78 ID:zFwIQNSP
言語組み込みでは用意されていない
試してはないけど https://github.com/rustcc/coroutine-rs みたいなライブラリはある
154 :
2016/12/22(木) 01:50:14.99 ID:ORYJE8lc
Rust触ってみた感じいいなとは思ったんだけど型理論周辺がさっぱりで
って時はどの辺から始めればいいの?やっぱり型システム入門?
155 :
2016/12/22(木) 04:57:42.70 ID:zFwIQNSP
http://bluss.github.io/rust/fun/2015/10/11/stuff-the-identity-function-does/#rust-has-dedicated-syntax-for-this
目からウロコが落ちた
実際にこんなブレースの使い方をしているコードを見かけたら読みにくいと言ってブチギレると思うけど
156 :
デフォルトの名無しさん
2016/12/22(木) 13:02:02.41 ID:y+mdv7YD
tcl/tk 知らんの
157 :
2016/12/22(木) 13:16:30.31 ID:vR+H7QAs
rust/tkでも流行ってんのかとググったけどそんなことはなかった
158 :
2016/12/22(木) 15:25:02.24 ID:cRDgF52C
Rustって、こういう構造体を返す関数作れないんだね。

struct {
 file_content: String,
 header: &str, // 同じ構造体インスタンスのfile_contentのスライス
}
159 :
2016/12/22(木) 21:30:47.90 ID:qT53/Nxx
>>158
範囲情報をRangeで持っておいて、headerを関数にするのでは足りないかな?

https://play.rust-lang.org/?gist=4d511d2346cd32c4ef3b0348635b8910
160 :
2016/12/23(金) 00:33:16.85 ID:mdacHMN9
Range.cloneは何とかならぬかと試行錯誤したけど
省略表記にした所でRangeを作るには変わりないから無駄な努力だった
ttps://play.rust-lang.org/?gist=f24e58d9a75d263fd75b0f651203a3b1

元の方も考えたけど、>>158は所有者が2名になるから無理だよなぁ
161 :
2016/12/23(金) 06:17:00.54 ID:6bIGT6Sw
Announcing Rust 1.14
https://blog.rust-lang.org/2016/12/22/Rust-1.14.html

WebAssemblyサポートですって奥さん
162 :
2016/12/23(金) 07:54:39.71 ID:D+0Lwjqy
>>159
なるほど。
これをRustでも書けてると見るか、書けてないと見るかは微妙なところだな。
163 :
2016/12/23(金) 08:18:02.54 ID:mdacHMN9
このインターフェース設計が生理的に気分悪いならrustは使わない方が良さそう
極標準的な手法だから、これがダメなら何も出来ないよ
164 :
2016/12/23(金) 15:10:42.06 ID:6bIGT6Sw
ライブラリ設計において、何かの値を所有権付きで受け取って変換するような関数が失敗した場合にはErrで元の値の所有権を返すようにしておいた方が便利だよな
ただ、std::collections::HashMapとかは値を削除するときキーの所有権を返してくれないから、ある値を取り出して変換して返すような処理で失敗した時にキーの複製を用意しないといけないのが気持ち悪い
所有権を受け取る前に借用してバリデーションを走らせるという手もあるけど、それはそれでオーバーヘッドになるし
165 :
2016/12/23(金) 16:07:53.79 ID:LOFIUVE3
気にしすぎや
166 :
2016/12/23(金) 19:34:18.37 ID:efetRagZ
マシン語読めって話何だろうけど 所有権を手離す為のcloneって
copy on write的な最適化は期待出来ないんかね?
167 :
2016/12/23(金) 22:45:04.10 ID:oLVQTEs3
LLVM IRのことをマシン語と表現しているのか、それとも本当に機械語を読むつもりなのか
168 :
2016/12/24(土) 02:20:23.19 ID:/RBsJIky
そもそも所有権を手放す為のcloneって何なんだ
169 :
2016/12/24(土) 12:04:03.69 ID:/RBsJIky
OptionにもHashMapのor_insert_with()みたいな機能があれば良いのに
170 :
2016/12/24(土) 12:14:13.23 ID:XL3bxxKp
Optionとコレクションクラスとの統一感は無いね
171 :
2016/12/24(土) 16:20:09.59 ID:dDtDlNib
Someだったらそのまま、Noneだったら指定のOptionを得る
ってんなら単にOption.or()でいいのではないかと

イマイチ何を実現したいのか分からんけど
172 :
2016/12/24(土) 16:25:11.60 ID:/RBsJIky
173 :
2016/12/24(土) 16:29:36.25 ID:/RBsJIky
あ、間違えた方を上げちまった
where T: Copyは無視してくれ
174 :
2016/12/24(土) 16:47:44.72 ID:dDtDlNib
unwrapだと思ってたら実はas_refだったし
immutableな取り回しじゃなくmutableな取り回しだし、、、

immutableならOptionじゃ合わないわな
そこを諦めたら既存APIで十分な気がするけど、そこがこだわりならStruct新設から始まりそう
175 :
2016/12/24(土) 16:56:08.78 ID:dn0dwenj
unwrapのランタイムコストが気になるマン
176 :
2016/12/24(土) 16:59:11.50 ID:/RBsJIky
>>174
self: &mut _を受け取るメソッドでself.cache的な何かを扱いたいことってない?
まあ別に、その場で書こうと思えば簡単に書ける処理だから絶対に欲しいってわけではないけど……

>>175
unsafe { mem::transmute::<_, &T>(self.as_ref()) }
177 :
デフォルトの名無しさん
2016/12/25(日) 01:33:20.36 ID:P0r3EIva
ぶっちゃけ今のRustってC++14の機能積極的に使うのよりメリットある?
178 :
2016/12/25(日) 01:47:23.23 ID:jMjv2Bym
borrow checkerが凶悪な所がメリット
あとはcargoが標準で色々やってくれるから、全くメリットがないこともないと思う

業務ならC++11/14を使うべきなんだろうけどさ
頑張ればsmart pointerとmakeで大体のことはフォロー出来そう
179 :
2016/12/25(日) 04:20:17.08 ID:klev3clW
C++は何でもできるんだから、新興言語のおいしい機能を盗み取っちゃえばいいじゃん
180 :
2016/12/25(日) 07:43:09.19 ID:gfQaVVC2
コンセプトちゃんはどうなった?
181 :
2016/12/25(日) 20:33:17.39 ID:X66rp15o
qiitaで済まんが、↓を読むとモダンなC++を使いこなすよりもrust使う方がよっぽど楽なんじゃないか
ttp://qiita.com/yumetodo/items/e49a673afd9a3ecb81a8
よく、C++の機能を全部学ぶ必要は無いよ使うとこだけ理解すればいいよ、と言う人がいるけど、
コードは書くより読む方が大変なことを失念してるんじゃないかと思う
他人のコードの読解は困難を極めますよって自白してんじゃないかと
182 :
2016/12/25(日) 20:35:24.70 ID:OIpmFOQN
あれやろ、職場のコード規約で使用する機能を制限すれば読むのにも困らんやろ(白目)
183 :
2016/12/25(日) 20:50:48.74 ID:OHOD3vvf
理解できない人がいるのでジェネリクスとやらは使ってはいけません
184 :
デフォルトの名無しさん
2016/12/25(日) 23:52:57.50 ID:P0r3EIva
>>183
ジェネリクスだめならモダン言語は殆ど、ってかjavaすらダメじゃね?
185 :
2016/12/26(月) 00:01:48.58 ID:mhrTCx4U
JavaのジェネリクスもModern Java(造語)な時期じゃないかね
C++でもboostで使われてた頃な気がする

>>181をざっくり読んだけど、C++を仕事でやってたらこれくらいは別に問題ないと思うけどな
rustみたいに数ヵ月単位で言語仕様に仕変入る方がコードの解読に困難を極めないか?
古いバージョンで固定すればいいじゃんってんなら何も言うことない
186 :
2016/12/26(月) 01:02:26.94 ID:xO25f93t
C++は継ぎ接ぎだらけのズタボロ言語
187 :
2016/12/26(月) 01:32:03.49 ID:zGEIM/Ml
>>183
理解できない人をチームから外せばおk
188 :
2016/12/26(月) 02:42:52.09 ID:kYuQe4Wz
C++を貶すつもりは無いけど、ジェネリクスもコンパイル時計算もtemplate任せってのが傍から見てて怖い
templateの過剰使用のせいか、エラーメッセージが分かりにくい&バグを潰しにくいっていう印象がある

ML系言語の発展で、型システムを柔軟にすれば大抵のことは分かりやすく実現できるよって分かって、
それをつまみ食いしたrustは実はかなり分かりやすいし、勉強の資料も実は少なくない

あと、https://github.com/rust-lang/rust/blob/master/RELEASES.md
で、1.0.0からLanguageの項目がどれくらい変わったか見てくと、実はほとんど変わってないよ。
マクロが結構強化されたんで、マクロを定義しまくるcrateは影響があるかもしれんね。
ただ、そういうのは大抵DSLをマクロで!っていう特殊な事例が多いんで、何したって読みづらい
189 :
デフォルトの名無しさん
2016/12/26(月) 03:53:18.15 ID:o+MLW/qO
>>188
コンパイル時計算はconstexprでいいだろ
190 :
2016/12/26(月) 07:04:10.78 ID:mhrTCx4U
>>188
お前がC++をよく知らないってことは分かった
使ってる言語を兎角推すのはまるでObjC信者のようだぁ
自身の言語が至上、他は総じてクソって見えるらしいな
191 :
2016/12/26(月) 07:45:24.49 ID:zGEIM/Ml
ウィ ワント パースペクティブ。
192 :
2016/12/26(月) 07:59:25.35 ID:lZ2XshJp
自分の使っている言語を押しまくるのはObjC信者に限ったことじゃないと思うんですが
193 :
デフォルトの名無しさん
2016/12/26(月) 10:11:15.89 ID:vXnTXx4r
Lispは神の言語
194 :
2016/12/26(月) 10:21:18.47 ID:y2AwbG3E
S式は神の言語
195 :
2016/12/26(月) 11:42:54.85 ID:HAos+tGx
C++は天動説
Rustは地動説
196 :
2016/12/26(月) 12:14:16.16 ID:kSu16y2+
ocamlだってシンプルだったのが拡張につぐ拡張で最近は結構汚くなってるし
rustだって10年20年すれば汚くなるよ
奇麗なままでいられるのはユーザー数の少ない言語だけだ
197 :
デフォルトの名無しさん
2016/12/26(月) 12:16:41.00 ID:HAos+tGx
Dはユーザー少ないけど汚い
198 :
2016/12/26(月) 13:57:45.03 ID:3l9yWhJs
言語仕様の拡張にRFCが必要な言語だから、無秩序に拡張できた過去の言語よりは綺麗な仕様になる圧力は高いと思う
199 :
2016/12/26(月) 13:58:25.74 ID:gUp/CjQ/
Rustで多態やるのはenum, trait, Boxを使い分ければいいの?
200 :
2016/12/26(月) 15:39:49.33 ID:kSu16y2+
>>198
C++のほうを見て同じことが言えるかな?
201 :
2016/12/26(月) 15:59:40.77 ID:y2AwbG3E
Serdeがよく分からぬ
202 :
2016/12/26(月) 16:42:09.73 ID:stVLD6EM
>>199
オブジェクト指向入門でよくある、哺乳類クラスとか、円や矩形クラスの
例(クラスツリー)を、Rustでどう表現するのか見てみたいな。
203 :
2016/12/26(月) 17:56:53.49 ID:R/Xz4XyC
>>202
servoでDOM表現するためのコードでやっているけどなかなかえげつない実装らしい
この前あったrustのmeetupではほかの言語のやり方をそのままrustに持ち込むべきではないと言っていた
204 :
2016/12/26(月) 18:06:10.80 ID:lZ2XshJp
そういえばクラスの継承がないのを不便に感じたことはないな
205 :
2016/12/26(月) 19:41:44.19 ID:ep/odFf8
ていうか、Rustで nominal subtyping を再発明する理由がない
型クラスはad hoc多相を実現する仕組みだがそもそもOOのためのもんじゃない
206 :
2016/12/26(月) 20:36:47.57 ID:mhrTCx4U
バズワードだらけで言いたいことが分からんけど
Rustでクラス継承を実現するなら、traitをツリー継承して実装すればいいってことだな!

イマドキのオブジェクト指向はツリー継承を崇めてないから自分はやらないけど
207 :
2016/12/26(月) 20:51:12.09 ID:J++O7+r9
ツリーでない継承ってどんなん?
208 :
2016/12/27(火) 00:03:40.08 ID:z3Z5XFyz
バズワードって何?流行の若者言葉?
209 :
2016/12/27(火) 02:03:02.61 ID:SQsOUYP2
みんな知った風な口きくけど、誰一人としてその明確な定義を言えない言葉のこと
Web2.0とかセカイ系とか。『自分で吐いてる言葉の意味を自分で理解できていない』ような連中をのさばらせておくと発生してしまう
210 :
2016/12/27(火) 02:07:36.20 ID:4L8P6HZQ
バズワード
buzzword
いかにも,もっともらしい専門用語。専門家や通人,仲間内が好んで用いるような言葉。
211 :
2016/12/27(火) 02:14:18.61 ID:M0D6LXD2
結局、哺乳類クラスはどうすりゃいいわけ?
212 :
2016/12/27(火) 02:17:57.69 ID:/xy3dl1q
哺乳類クラスなんてものを用いる設計が悪い
、というのは言い過ぎとしても、「哺乳類クラス」とかいう抽象的すぎる問題を持ってこられても議論のしようがなかったりする
現実の問題ではケースバイケースで適切な対処が異なるんだから
213 :
2016/12/27(火) 02:34:20.97 ID:M0D6LXD2
>>212
設計がクソなのはそうかもしれないけど、世の中がJavaっぽいクラスを前提に
動いてるんだから、それを素直にコードに落とせないのはまずいよ。

DOMやGUIライブラリ(のラッパー)はそうでしょ?
214 :
2016/12/27(火) 03:23:41.04 ID:VnAYfBLQ
オブジェクト指向な設計を、純関数型言語で実装できない!シネ!!みたいなね

traitとstructで無理矢理クラス継承を模倣すれば?
rustのお作法から外れて邪道感溢れるから出来るの分かっていても真面目に答えるヤツはここにはおらんよ(多分
215 :
2016/12/27(火) 03:28:37.64 ID:zWPkbd9P
GObject、うっ、頭が……
216 :
2016/12/27(火) 04:14:04.89 ID:4L8P6HZQ
>>212>>211が本当に「哺乳類クラス」を実装したいのか問うていただけだろうに、技術的観点で批判するのでなくシネとか何とか人格攻撃するのは違うでしょうに
>>213が本当に哺乳類クラスを必要としていたのだって結果論に過ぎないのに
217 :
2016/12/27(火) 04:27:55.09 ID:P0uTzVTB
こんなのにいちいち突っかかってたらキリが無いだろ……
この程度の揶揄を無邪気に行う奴なんて世の中にはゴマンといる
218 :
2016/12/27(火) 06:29:43.86 ID:4L8P6HZQ
error-chainはアプリケーションで使うには便利だけど、ライブラリで使うには微妙そうだな
・Errorオブジェクトがenumじゃないから直接マッチできない(kindメソッドを介す必要があり)
・Error型にattributeを設定できない(error_chain!が吐き出すドキュメントをそのまま使わざるを得ない。ErrorKindのvariantには設定できるけど)
・backtraceクレートが動く環境でしか動かない
ライブラリが外部に露出するエラー型はやはり手動で書くのが一番無難なのかねえ……
ドキュメントを書き換えるためにラッパ型を用意するのは本末転倒だろうし
219 :
2016/12/27(火) 07:26:24.51 ID:TsU75U35
error_chainについては以前チラ見した程度の知識しかないけど、何に使うものなのかよく分からんかったわ
println!("error: {}", e);
let mut e: &Error = &e;
while let Some(err) = e.cause() {
println!("caused by: {}", err);
e = err;
}
これじゃあかんのか?
220 :
2016/12/27(火) 07:55:36.77 ID:O+RLyrRL
>>218
backtraceはfearureでoffにできるから、ちゃんとCargo.toml書けばOK
ドキュメント生成できないのはissue立ってたからそのうちなんとかならないかと期待してる

>>219
error-chainは複数種類のエラーをまとめて一つの型で表現するときのボイラープレートを書かなくてもよくすることが目的だから、
ソースコードが冗長になってもよいならば別に使わなくてもなんとかなる
あとは、勝手にbacktraceを作ってくれるからエラー発生時のデバッグが少し楽になるというのもある
221 :
2016/12/27(火) 09:20:55.40 ID:4L8P6HZQ
backtraceオフにできるのか。いいことを聞いた
222 :
2016/12/27(火) 10:13:26.91 ID:alTKLSSw
公称部分型とかアド・ホック多相がバズワード扱いされてるってこと……?
223 :
2016/12/27(火) 10:18:17.48 ID:zWPkbd9P
>>209で主語の大きい表現がなされたせいで不穏な空気になってるだけで、実際にバズワード扱いしてるのは>>206だけだろ
その>>206もバズワードという言葉を正しく使えてるかは微妙だし
224 :
2016/12/27(火) 11:12:32.24 ID:sIydEYNy
専門用語を使うのはいいとして>>205は何が言いたいのか分からんよ

>>208
むしろ死語かな
知らない世代がいるなら老がい用語
225 :
2016/12/27(火) 11:28:54.23 ID:O+RLyrRL
rustでクラス階層表現する話はこの辺見るのがよいと思う
https://doc.servo.org/script/dom/
226 :
2016/12/27(火) 13:49:54.13 ID:/xy3dl1q
どちらにせよerror_chainはインターフェースの独自色が強すぎて一般向けのライブラリで使うには向かないと思うけどな
使用例を見ても、アプリケーションではrustupとかいう輝かしい例があるけどライブラリではめぼしい例もないよな?
227 :
2016/12/27(火) 13:57:00.38 ID:GwCWTN18
今は有料になっちゃったけど、Learn C the Hard Wayっていうオンライン教材で、C言語でオブジェクト指向を作る講座を思い出す
構造体の最初のメンバに親クラスを定義すれば、キャストで親クラスになれるって手法だった
Rustでも親になる型の変数を用意して、適当なtrait、Asとか何とかを使えば作れるだろうとは思う

ただ、OOを使うべき場面ってのはダイナミックな用途に限られるんじゃないか
Trait Objectとかで大抵は事足りるはず
228 :
デフォルトの名無しさん
2016/12/27(火) 14:02:04.36 ID:b9lc87EM
OO好きねえ……
229 :
2016/12/27(火) 15:30:08.41 ID:/xy3dl1q
>>227
やってみた。汚い
Deref coercionとかは知らん
https://play.rust-lang.org/?gist=788c6c09719636cd28481db388caccc4
230 :
2016/12/27(火) 15:50:42.37 ID:sIydEYNy
>>229
汚くてワロタw

親構造体内包+Derefやってみたけどムリポ
メソッドオーバーロードを考えなきゃ良いんだろうけど、その場合の実用性はどうだろうね
ttps://play.rust-lang.org/?gist=43f8c19b64533a18262ce751d08b6d75
231 :
2016/12/27(火) 15:51:59.79 ID:sIydEYNy
違う、オーバーロードじゃなくオーバーライドだ
232 :
2016/12/27(火) 16:04:44.73 ID:M0D6LXD2
>>227
ServoのDOMは、基本的にそのC言語でオブジェクト指向と同じみたいだね。
mem::transmute() を使ってる。
ただ、Castable#is()で判定できるから、それを忘れなければ、より安全って感じか。

このCastableを汎用的にしたやつがcrates.ioに有れば、便利かも。
233 :
デフォルトの名無しさん
2016/12/28(水) 00:45:05.70 ID:bvnjBJpz
関数型言語も狙うなら関数のオーバーロードあったほうがいいと思う。
234 :
2016/12/28(水) 10:22:40.34 ID:33G5Uz6K
traitじゃ駄目なの?
型推論がある言語で関数のオーバーロード(同名で型が異なる関数の定義)ができる言語なんて今のところ無いよ
オーバーライドはOOの意味合いだしなあ
235 :
デフォルトの名無しさん
2016/12/28(水) 10:33:00.62 ID:yWrP/m5t
>>234
>型推論がある言語で関数のオーバーロード(同名で型が異なる関数の定義)ができる言語
え?あるよね?
236 :
2016/12/28(水) 10:49:12.17 ID:Pwrrr1Os
ライブラリを作るときは、依存してるクレートについてdefault-featuresを切っても問題ないなら切っといた方が良さそうだね
ライブラリ側が有効にしてるfeatureはユーザ側でオプトアウトできないけど、ライブラリがfeatureを無効にしていてもユーザ側でオプトインできるし
237 :
2016/12/28(水) 11:39:36.50 ID:j4SHG8/A
冬休みだからか、すっとぼけた質問や俺得提案が多いな
238 :
2016/12/28(水) 12:46:13.64 ID:zjOgRctZ
あると思うけど関数型言語をねらうのにオーバーロードがあった方がよいのは理由がよく分からない
239 :
デフォルトの名無しさん
2016/12/28(水) 13:05:53.71 ID:/YvbcywK
オーバーロードよりも型クラス+カリー化の方が関数型っぽいな
240 :
2016/12/28(水) 13:17:11.06 ID:yxR21hjj
ErlangとかJuliaとか
241 :
デフォルトの名無しさん
2016/12/28(水) 13:34:40.02 ID:/YvbcywK
Juliaは未だにGithubで「オーバーロードを採用してしまったから部分的用できない、ではどういう記法で部分的用を短く書くか」、って揉めてなかったか?
242 :
2016/12/28(水) 13:41:59.93 ID:SLz2RvoN
そういや、rustって、構文解析の邪魔になりそうなものは積極的に排除するイメージ。
文末のセミコロンを今時採用すると思わんかった。
243 :
デフォルトの名無しさん
2016/12/28(水) 14:12:42.94 ID:AaUHlvvb
rustって部分適用とかカリー化とか書きやすいの?
244 :
2016/12/28(水) 14:27:58.88 ID:9y3G1esR
Rustのセミコロンは式を文にして返り値をユニット型にする演算子だからそりゃ必要だろう
245 :
2016/12/28(水) 22:54:23.66 ID:tiZ71Spt
ifやmatchが式なおかげで「if if let」とか「while match」とか書けるね
記述量は減るけど慣れてないとビックリしそう

あと「いふいふれっと」ってずっと言ってると
ちょっと「みこみこなーす」っぽい
246 :
2016/12/28(水) 23:02:02.12 ID:6NcUzOVy
ぽくはない
247 :
2016/12/28(水) 23:57:43.05 ID:bDO+6moT
>>244
蝉転んで区切るってやつか
248 :
2016/12/29(木) 00:08:37.19 ID:pmAxOvWh
審議拒否
249 :
2016/12/29(木) 18:19:20.70 ID:7bfuEKFU
セミコロンなくても if if let は構文解析出来るだろうけど面倒だったんだろうな
開発始めた頃はまだ末尾セミコロン死ねな風潮でもなかったろうし
250 :
2016/12/29(木) 19:05:08.27 ID:pmAxOvWh
ま、まあECMAScriptのautomatic semicolon insertionみたいなことになるよりはマシだから……
251 :
2016/12/30(金) 06:51:41.42 ID:a1QfaOpy
「行末セミコロン死ねな風潮」は行末セミコロン自動挿入のクソ言語のせいなんだから
「行末セミコロン死ね! だからRustも行末セミコロン自動挿入すべき!」とか意味不明の極致だろ
252 :
2016/12/30(金) 09:15:43.02 ID:BAOxkPJ/
唐突なPythonディスに俺がブチキレ
253 :
2016/12/30(金) 12:52:44.59 ID:gA9NnhXP
セミコロンあり無しそんなに重要か?
254 :
2016/12/30(金) 14:09:34.73 ID:STL3vH6g
行末セミコロンはフリーフォーマットには欠かせない必要不可欠なもの
255 :
2016/12/30(金) 14:14:16.09 ID:+0G7T/E5
なくてもなんとかなる場合もあるけど、有り無しで設計/実装の難易度はダンチよな、超重要

人間様にとっては
256 :
2016/12/30(金) 14:14:52.91 ID:+0G7T/E5
なくてもなんとかなる場合もあるけど、有り無しで設計/実装の難易度はダンチよな、超重要

人間様にとってはASCII文字以外を変数名に使えるかどうかくらいの問題か
257 :
2016/12/30(金) 15:45:32.03 ID:1LhwiS9W
セミコロンを忌み嫌う人はそもそもrustのborrowとかmoveとかめんどくさがって使えなさそう
258 :
2016/12/30(金) 16:25:30.23 ID:Q3tvxZdg
;はOKだけど
PASCALやErlangみたいに
;と,と.の使い分けになったら嫌
259 :
2016/12/31(土) 08:20:02.34 ID:evZQ8uAx
エディタで\n\rを;に表示すればいいんだ!
260 :
2016/12/31(土) 12:20:17.73 ID:H5rV9I3r
fn main() {;
println!("hello");
};
261 :
2016/12/31(土) 12:28:55.47 ID:Sym7Bg1E
error: expected item, found `;`
--> <anon>:3:2
|
3 | };
| ^

error: aborting due to previous error
262 :
2017/01/02(月) 10:01:31.48 ID:1m/cK6rN
セミコロンに飛びついてるのは
他のことについて語れないくらいバカな奴だけだろ。
263 :
2017/01/02(月) 21:18:31.68 ID:ichN9xlo
唐突な人格攻撃に困惑
264 :
2017/01/03(火) 11:38:39.79 ID:xKIwkl8n
rustc: Stabilize the `proc_macro` feature by alexcrichton · Pull Request #38783 · rust-lang/rust
https://github.com/rust-lang/rust/pull/38783

Macros 1.1がstabilizeされるってよ
265 :
2017/01/03(火) 12:02:32.26 ID:3o9M4oho
きたか…!!

  ( ゚д゚ )
  .r   ヾ
  |_|  |_|
   | | |
   しノ

___ / ̄ ̄ ̄/_
  \/    /
266 :
デフォルトの名無しさん
2017/01/03(火) 13:08:42.00 ID:ZKRmSAM8
マクロのそらを
267 :
デフォルトの名無しさん
2017/01/03(火) 18:29:20.46 ID:4ChvZkkB
どこの超時空要塞?
268 :
2017/01/03(火) 20:40:08.40 ID:wuUskEpB
RFCをざっくり読んでも具体的に何が効率的になるのか分からん
try!が?になるくらいのシンプルな例を誰か頼む
269 :
2017/01/03(火) 20:58:17.39 ID:r8LUHXKe
> we're shooting for macros 2.0 stable in the far future
ref. 1681-macros-1.1.md

要は便利機能は2.0待ってろってことか、先は長いな
270 :
2017/01/03(火) 21:50:34.44 ID:OFYBDDbH
分かってると思うけど2.0ってのはrustc 2.0じゃなくてMacros 2.0だからな
271 :
2017/01/05(木) 00:29:08.66 ID:ZD27oJ5u
Serdeって何故デシリアライズされる型とdeserializeメソッドがセットになってるんだろう
MapVisitor::visit_valueでカスタムのdeserializeメソッドを使いたい場合はラッパ型を用意してDeserializeをimplするしかない?
272 :
2017/01/05(木) 22:10:05.44 ID:NKDpP9qZ
discriminant_valueはいつになったらstabilizeされるんだ?
variantを比べるためだけにmatchして云々とかいう冗長で非効率な実装はなるべくしたくないのじゃ
273 :
2017/01/06(金) 00:11:35.37 ID:Fz5LbEfZ
https://github.com/rust-lang/rust/issues/24263

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?
274 :
2017/01/06(金) 01:12:22.50 ID:FrG2KJ61
これってコンパイラのバグ?
https://is. gd/jWTzHJ
275 :
2017/01/06(金) 01:34:14.03 ID:Fz5LbEfZ
どんな振る舞いを期待していたのかは知らないけど、とりあえず^は指数関数じゃなくてXORだよ
276 :
2017/01/06(金) 08:55:49.46 ID:RoJjSRcN
Rustでもビット/シフト演算子の優先度は四則演算子よりも低いんだっけか
期待動作が分からんのでprintじゃなくassertで頼む
277 :
2017/01/07(土) 06:27:18.42 ID:ZgzC+Fa4
256と3のXORとか謎すぎるし、^の意味を履き違えてるだけの線が濃厚な気が……
278 :
2017/01/07(土) 15:58:55.81 ID:0PjiZvlV
うん。近年まれに見るバカだ。
279 :
2017/01/07(土) 16:04:59.75 ID:ZgzC+Fa4
寝ぼけてた
280 :
2017/01/07(土) 16:57:17.26 ID:xEA8lk8b
ワロタ
281 :
2017/01/07(土) 21:42:06.91 ID:n2yomPvZ
pythonとかocamlとかjuliaとかcommon lispとか、Exploratory programmingに適した言語とrustを開発の両輪にしたいけど、
何かおすすめある?
282 :
デフォルトの名無しさん
2017/01/08(日) 01:03:37.13 ID:kfDqfkDn
>>281
forth
283 :
2017/01/08(日) 01:05:56.21 ID:PddBs9sQ
Exploratory programmingのために新たな言語を学び始め、開発が全く進まない未来を予知した
284 :
2017/01/08(日) 07:57:00.85 ID:0mVP2hZ6
Erlang
285 :
2017/01/08(日) 08:35:33.23 ID:23/7dWy/
Rust
286 :
2017/01/10(火) 19:06:19.84 ID:f/pmyPVx
>>281
>Exploratory programming

プロトタイプ作って試行錯誤、って話ならHaskellが一番使いやすいと思う
小規模のものなら、再発明が面倒になってHaskellのプロトタイプを改善してそれでよしとする未来まで見える

遅延評価絡みでオーダーのトラップがあるのが難点だけどな
287 :
2017/01/11(水) 14:21:39.72 ID:XBWH8SeE
ゲームしつつ片手前にドキュメントを眺める・・・Rust1時間目

let ほほう型推論か・・・コンパイラで型推論は最近の流れ?
mut ミュータブル・・・これつけないと定数ってことじゃろかよーわからん・・・
String::new() あえてnewっていうメソッドにせんでも・・・とにかく静的らしい・・・

ほほう・・・
288 :
2017/01/11(水) 15:07:47.36 ID:7uyPKRK3
Rustと言えばゲームだね!
289 :
2017/01/11(水) 15:22:46.07 ID:XBWH8SeE
2時間目・・・

エラーハンドリングの仕方がちょっと特殊だな・・・例外だらけの汚いコードにはならないのだろうか・・・
loopとはわかりやすいキーワードだ・・・もしかしてrustはとりあえず全部無限ループさせるのか?なわけないよな・・・
matchとはなんぞ・・・これはとても便利そうだ・・・
parse()って何に?letに型指定すればそれにってことだろうか?parseIntとかじゃなくてシンプルだな・・・

ふむふむ・・・
290 :
2017/01/11(水) 16:06:44.87 ID:/IZ7nDq3
チラ裏
291 :
2017/01/11(水) 16:53:57.45 ID:5OhI584z
むしろTwitter、なぜここでツィートしてるのかは不明
コテつけといて、NG入れるから
292 :
2017/01/11(水) 19:03:44.12 ID:XBWH8SeE
触らなければよかったのに触っちゃったね
よーし今日から荒らしていくからよろしくwwwwwww
293 :
2017/01/11(水) 19:04:54.12 ID:XBWH8SeE
まぁこんなゴミ言語よりはGoのほうがよいわな
こんなん使うのはSwiftしか使えない池沼だけ
294 :
デフォルトの名無しさん
2017/01/11(水) 19:06:19.76 ID:AM+tjFEn
歌舞伎座.tech#13「Elixir 勉強会」
2017/01/11(水) 開場:18:57 開演:19:00  ニコニコ生放送
lv286846512
295 :
2017/01/11(水) 19:07:09.79 ID:XBWH8SeE
ふぁーーーwww
見に行くしかないwww
296 :
2017/01/11(水) 19:17:33.64 ID:XBWH8SeE
LL以外どこの言語にもあるスレッドがご自慢のクソ言語
劣化Scala ふぁーwww
297 :
2017/01/11(水) 19:43:29.93 ID:PvND63zB
キチガイだ
298 :
2017/01/11(水) 19:43:37.85 ID:5OhI584z
borrow checkerに挫折したか
学習曲線の改善は難敵よね
299 :
2017/01/11(水) 19:44:33.25 ID:/IZ7nDq3
const fn tracking issue (RFC 911) #24111
https://github.com/rust-lang/rust/issues/24111#issuecomment-227612305
でたった今話し合われてるけど、const fnがstabilizeされたら関数にconstをいちいちくっつける作業が発生して面倒くさそう
constじゃない関数をmut fnみたいにする案もあるけどそれはそれで互換性の問題があるしなあ……
300 :
2017/01/11(水) 19:56:50.41 ID:Dbl5XF86
Rust 2を待つしかないと
301 :
2017/01/11(水) 20:08:37.68 ID:XBWH8SeE
出来損ない言語の末路だな
独裁者のいない寄り合い所じゃこんなもんだろwww
302 :
2017/01/11(水) 20:15:03.09 ID:/IZ7nDq3
>>300
そう単純な問題でもないみたいで、constをくっつけるのはnon-breaking changeだけどその逆はbreakingだからconstの方をデフォルトにするのは宜しくないのでは、という議論もある
derive(Copy)とかと同様の問題。だから-W missing_copy_implementationsと同じようにopt-inなlintだけに留めるべきではとも言われている
303 :
2017/01/15(日) 16:47:20.62 ID:Ib7guha6
>>300はrust 2でbreaking change待ちって意見だろうよ
breaking changeせずに適用したいから云々って話なんだろうけど

どう転がるにせよwarningレベルで対応を要求してくるだろうからノンビリ待とうかね
304 :
2017/01/15(日) 20:39:38.98 ID:SlBKEDAf
マクロやプラグインでやってたことの一部がconst fnで出来るようになるんだよね、これ?
bookであったローマ数字をrn!(X)でコンパイル時に10にするようなのを、rn("X")とかに出来るってことなら嬉しい
マクロ苦手なんだ
305 :
2017/01/15(日) 21:12:15.99 ID:8SgEfBB1
const fnは普通のfnのサブセットみたいなものだからマクロの代わりとしては微妙なような
const fn内で関数を宣言できるわけでもないし、外部スコープの変数を直接参照したりreturnできるわけでもないからなあ
306 :
2017/01/16(月) 01:06:39.35 ID:3MjcRRh6
すべてのmacroの代替になるわけではないけど、macroやらpluginやらで無理して実現してたことの一部が楽にはなるはず
それぞれ適した用途で使えばよい
307 :
2017/01/16(月) 11:01:09.92 ID:YCpRkRk0
inlineとmacroとpluginとconst fnと
適材適所をまとめた情報ってどこかないかね
308 :
2017/01/18(水) 19:26:40.80 ID:0/He/nuF
const fnからpanic!出来ない仕様ってstabilizeされてからもそのままなのかな
309 :
2017/01/19(木) 05:46:59.43 ID:ff1dOA50
>>308
そうだと思うけど
const fnからpanic!呼びたいって要求は
#[cfg(...)]みたいなattributesに置き換えられないかな
なんか考えが足りてなかったら申し訳ない
310 :
2017/01/19(木) 06:12:01.34 ID:nSqYy0BF
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!();
}
311 :
2017/01/19(木) 17:50:45.29 ID:KP9WuCCK
そもそもその手の機能ってC++やDですら実現されてないんじゃ……
312 :
2017/01/22(日) 02:14:54.25 ID:meHWinYv
https://crates.io/categories/games
>If Rust the video game were implemented in Rust the programming language, it would belong in this category.
クソワロタ
313 :
2017/01/22(日) 15:32:04.47 ID:He1ERbj9
最近はRustで検索するとゲームの方より言語の方が上位に来るようになったぞ!
314 :
2017/01/22(日) 15:36:25.38 ID:Yl4nAGke
RustってポストC/C++になれる言語ですか?
315 :
2017/01/22(日) 16:37:35.24 ID:C/30dEKV
単にお前さんのGoogleアカウントの検索の履歴からRust言語に重み付けされた結果が出てるだけだから
アカウント変えるとゲームの方が先にくる場合もままあるよ

> Displaying 0-0 of 0 total results
これは、、、言い出しっぺの法則やな?
316 :
デフォルトの名無しさん
2017/01/22(日) 19:28:06.48 ID:eyLJuWmg
>>314
ポテンシャルはある。
317 :
2017/01/22(日) 19:40:20.56 ID:Dd1b/Mlb
https://github.com/Wilfred/remacs
A community-driven port of Emacs to Rust.
318 :
2017/01/24(火) 19:29:16.39 ID:igHP4a7v
>>314
寝言は寝て言え。現状からみてD言語ルートだ。
319 :
2017/01/24(火) 19:53:42.15 ID:pU9ER4NI
Mozillaが本気ならD言語よりはマシなんじゃね
320 :
2017/01/24(火) 20:42:28.51 ID:VnBtkYVE
Quantumに着手してる時点で本気でないはずがない
321 :
2017/01/24(火) 21:24:09.97 ID:dNkKf7mt
個人的なツールでちょっと使い始めたところだけど
C++テンプレート初期のエラーメッセージ地獄にくらべるとRustさん親切すぎて天使かよって感じなのでがんばってほしい
けどもうひと押し(偉いひと説得材料的な)なんかほしい気はする
322 :
2017/01/24(火) 23:34:50.03 ID:iJ0FMzkO
>>319
Mozillaが本気出してこの程度ならD言語未満のHaskellレベルじゃね?
323 :
2017/01/24(火) 23:46:14.74 ID:rMS2+V/T
>>313
あっちはまだアーリーアクセスだから…
324 :
デフォルトの名無しさん
2017/01/25(水) 00:43:42.66 ID:uVLYflKb
rustとc++14ならどっちが学習コスト高いかな?
325 :
2017/01/25(水) 01:06:25.08 ID:icd2X49v
>>324
(高コスト)C++闇の軍団>proc macroを書くRust>テンプレートを書くC++≧ビルドプラグインを書くRust>Rustさわり>C++さわり(低コスト)
現状こんなもん?
326 :
2017/01/25(水) 08:00:44.75 ID:wJvgwWCY
国際規格みたいなのができるとしても複数の実装の事を考えると
プラグインは仕様からは外れるかなーとは思う
327 :
2017/01/25(水) 09:57:43.37 ID:+ZiK5CtY
>>321
zero costで性能良いって売りが事実になれば...
上で上がってたウェブサービスのベンチマークが意外とガッカリ性能だったのが萎える
328 :
2017/01/25(水) 11:09:39.71 ID:wJvgwWCY
ウェブサービスのベンチマークなんてコンパイラ云々よりも構成のほうが影響強いって上でも言われてるじゃん
とはいえアセンブリレベルでは機能制限されたC++でしかないからrustで速くできるならC++だともっと速くできるわけで
労力もC++のほうがかかるだろうけど
329 :
2017/01/25(水) 16:34:12.89 ID:82yMOZoe
言語仕様なんだからプラグインが外れるのはむしろ当たり前かと
330 :
2017/01/25(水) 16:42:20.24 ID:vaJn6hA3
>>322
ん、今さりげなくHaskell馬鹿にした?
331 :
2017/01/25(水) 17:46:06.98 ID:G/yiP9yt
C++だと安全にするためにコピーしてた箇所をrustだとガンガンmoveにできるとかで、
普通に書いたらC++より早いとかあってもおかしくないとは思う
332 :
2017/01/25(水) 17:55:56.70 ID:GF1+cyEf
C/C++は危険でも関係なくガンガンコピーするから速い
開発者が明示的にコードで安全にするか
言語が暗黙的に安全にするかの違いがあるだけで
安全なコードが吐かれてたらその分は遅くなるよ
333 :
2017/01/25(水) 19:05:12.07 ID:+ZiK5CtY
偉い人説得のために言語仕様だけ推すわけでもなく
rustupのビルドツールセットの管理性や、cargoのビルド環境の利便性や、3rd party crateの性能なんかをまとめて
だからrustは良いんですよってプレゼンするんだよぉ

んで、公式に唱ってるわりに足引っ張ってる3rd party crateの性能が気になる
言語仕様は安全なマルチスレッドを言語文法でもうちょっと便利にして欲しいけど、グリーンスレッドに先祖帰りされても困るしのう
334 :
2017/01/25(水) 20:46:32.79 ID:o52BqWk7
>>332
そうなんだあ
Rustって遅いんですね
335 :
2017/01/25(水) 21:10:53.58 ID:G3Sy5RF2
コピーするから速い……?
336 :
2017/01/25(水) 22:08:50.44 ID:9B/zRGmW
週刊誌並の偏った切り取り方
337 :
2017/01/25(水) 22:16:22.79 ID:vvheTSCl
せやで
dereferenceは高コストな操作だからstructだろうが何だろうが参照渡しより値渡しの方が高速なんやで
338 :
2017/01/25(水) 22:31:03.09 ID:rhF3V2Xc
めっちゃデカイ構造体コピーしたろ!
339 :
2017/01/25(水) 22:51:07.48 ID:icd2X49v
そもそもRustで「めっちゃでかい構造体」を作るのって、どっかで設計間違ってる気がしなくもない。
340 :
2017/01/26(木) 01:26:45.59 ID:QpF8cABc
それは作るプログラムの性質であってRust関係ないしお前が設計の良し悪しを決めるものではない
341 :
デフォルトの名無しさん
2017/01/26(木) 01:43:10.61 ID:2yUJ7U50
Rustと言う名前のゲームがあるそうですが
それはプログラミング言語のRustで作られているのですか?
342 :
2017/01/26(木) 07:47:28.82 ID:2BnY2tIN
>>341
その同名のゲームとは関係ない
343 :
2017/01/26(木) 22:36:48.11 ID:CV+F+02K
コピーのコストは構造体のサイズもあるがヒープ使ってるか否かも関係するのでは
344 :
2017/01/27(金) 05:06:53.57 ID:ZptWLHtZ
32bit時代のC#のドキュメントには、16バイトまでなら参照よりコピーした方がいい
って目安が書いてあったけど、今どきはどんなもんだろ。
345 :
デフォルトの名無しさん
2017/01/29(日) 05:44:52.43 ID:OhLobWwB
Rustは何が新しいのか(基本的な言語機能の紹介) - いもす研 (imos laboratory)
http://imoz.jp/note/rust-functions.html


こんな記事見つけた
346 :
2017/01/29(日) 06:53:26.90 ID:96Ypx+6J
Rustは何が新しくないのか、とセットで
http://lyrical-logical.hatenablog.com/entry/2017/01/28/213539
347 :
2017/01/29(日) 08:24:52.66 ID:95TVWg7i
つまりRustで出来てC++で出来ないことはないけど、C++で出来てRustで(コンパイラが通してくれないせいで)出来ないことはある、と。

C++でいいじゃん。Rustいらないね。
348 :
デフォルトの名無しさん
2017/01/29(日) 08:34:25.98 ID:uQxwW8BY
何でも出来た方がいいのはチーム全員が信頼出来る場合だけだな
349 :
2017/01/29(日) 09:19:49.49 ID:MpcYD/ky
自分自信すら信用できず、実際自業自得でバグを産むから、他人の信用なんか真っ平ごめんだ
350 :
2017/01/29(日) 11:26:25.73 ID:qAZTn4yt
Mozilla(というかブラウザ)のメモリ関連のミスは影響がヤバいからわざわざRustまで作ってるだけで
メモリ関連ミスってもどうということはない程度のプログラムならC++でもいいんじゃない
351 :
2017/01/29(日) 11:29:34.14 ID:HeP1z5CV
メモリ関連というよりはもっと一般的なuse-after-freeの対策も含んでると思うけどな
最近のSerde 0.9のリリースなんかはまさにそれだし
352 :
2017/01/29(日) 15:04:54.98 ID:3OY0Puum
C++書けない無能のための言語なのに、学習曲線が断崖絶壁の無能に使えない言語に落ち着くRust。
353 :
2017/01/29(日) 15:12:56.27 ID:MpcYD/ky
swiftスレで相手してくれる人がいなくなったからrustスレに遊びに来たのな
あっちで遊んでやんよ、お前も使ったことないrustよりまだ使えるswiftのがいいだろ?
354 :
2017/01/29(日) 16:05:51.17 ID:LzV9/FyF
大規模なC++プログラムメンテナンスするコストに比べればrustの学習曲線なんて平原みたいなものでは
355 :
2017/01/29(日) 16:06:01.65 ID:SmTDa/S0
自分の脳みそを完全に信用できるならな
356 :
2017/01/29(日) 18:28:56.50 ID:MpcYD/ky
いや信用できないからrustが良いのだ
rustはエコシステムが他言語に比べてめっちゃスマートだよな
goもまぁ悪くはないけどソースファイルの置き場とか依存ライブラリの管理とかイマイチ
C/C++やSwiftはそれぞれ別の理由で論外だし
357 :
2017/01/29(日) 22:47:53.84 ID:Ocx7v7z5
書くための敷居が低いけど、書く能力がモロにメンテナンスコストに反映されるC++と
書くための敷居が多少高いけど、だいたいはコンパイラが面倒見てくれるRust

C++で血ヘド吐いた人ほど後の方を重視して、メンテコストを軽く見る人ほど前の方を見てRust叩く印象。
358 :
2017/01/29(日) 23:15:06.07 ID:NDmTx4oh
書くための敷居というか、入門の敷居では
慣れれば書くことに苦労することはあまりないように感じる
359 :
2017/01/30(月) 00:51:03.60 ID:eF+mclkT
https://crates.io/
そろそろ Crate は、ジャンルごとに階層化したりタグ付けできたりソートできたりしないと発見率が糞になるかと。
360 :
2017/01/30(月) 02:43:56.69 ID:YhRMpmBj
敷居が高いは不義理をしてあわせる顔がない時に使う
361 :
2017/01/30(月) 03:24:58.17 ID:OQRcOPPf
へえ、ものしりだねー
362 :
2017/01/30(月) 07:58:57.30 ID:nWNAE5Le
>>359
2000年頃のyahooみたいに?
ツリー検索をこの時代に復活させるのはないわー
363 :
2017/01/30(月) 19:07:27.99 ID:bQnpSDhS
いくら言語を誉めたところで、この言語で書かれたまともなプロダクトも、この言語の本も出てないことが、この言語のダメさを物語っている。
364 :
2017/01/30(月) 19:11:49.38 ID:rVcDTRet
Facebookがmercurial hgをポーティングしたって話の裏は取れたんだっけ?
365 :
2017/01/30(月) 19:36:00.65 ID:nWNAE5Le
>>363
つ ripgrep
煽るには知識が足りてない
366 :
2017/01/30(月) 19:43:25.52 ID:ako8vkN5
ライブラリの話ならともかく、エンドユーザ向けのプロダクトが多くないことと(エンジニアにとっての)言語の良さって関係あるの?
個々人のプロジェクトで役に立ってるのならそれで十分でしょ
367 :
2017/01/30(月) 21:56:25.56 ID:7WMFgwOL
それ以前に仕様が固まってないじゃん。Rust
AppleのSwiftが流行らないのと同じ。
今は実験段階なんだからプロダクト数だけで言語の良し悪しは測れない。
368 :
2017/01/30(月) 22:33:48.94 ID:BdTPiSFU
>>368
1.14にもなって言語仕様固まってないのも問題のような気がしなくもないが……
Goはまだ(?)1.7だけどももうほぼ言語仕様Fixと言っていいレベルで固まってるし。

プロダクトって面で言ったら上で出てるripgrepもそうだが、
まずFirefoxのコアに使われてる時点で「まともなプロダクトがない」って口が裂けても言えないだろ。
369 :
2017/01/30(月) 23:13:49.09 ID:qF4ARhTt
const_fn、conservative_impl_trait、never_type、associated_consts……この話はやめよう
370 :
2017/01/31(火) 00:42:51.03 ID:E22d6Q0u
固まるの意味が分からないがstableな機能ではまだ足りないと言っている?
371 :
デフォルトの名無しさん
2017/01/31(火) 01:08:37.64 ID:lkTuVnqH
言語仕様に変更があったら後方互換性があってもダメというなら殆どの言語使えないよね。
何ならOKなんだ?というレベル
372 :
2017/01/31(火) 01:18:23.09 ID:w/stZREj
C++センパイの進化について
373 :
2017/01/31(火) 01:57:41.10 ID:TmvDy1Hy
C/C++のようにOSでもカーネルでもデバドラでも組み込みでも何にでも使える言語が良い
ユーザレイヤでしか触れない言語は価値が低い
374 :
2017/01/31(火) 02:04:11.12 ID:EAnQTfF2
いったい何を批判しようとしてるんだ?
375 :
2017/01/31(火) 04:21:00.72 ID:J6yoEKAE
c++でデカイプロジェクトゴリゴリ書いてた人ほどrustいいんだろうな
376 :
2017/01/31(火) 05:03:19.87 ID:IQXv4KrI
C++はヘッダファイルに分かれてたりするのが嫌い。

Rustもモジュール周りはちょっと嫌い。
modといいつつ、実質includeが基本みたいだけど、なんだか古めかしい。
377 :
2017/01/31(火) 05:14:32.48 ID:iAIegLum
可視性と階層構造を持つincludeとかもはやincludeじゃないよそれ
378 :
2017/01/31(火) 11:32:06.32 ID:x8DMpHTc
>>371
単純に機能が足りてない。
conservative_impl_traitがないとアンボックス化したクロージャ返せないとか。
379 :
デフォルトの名無しさん
2017/01/31(火) 11:44:51.26 ID:sCWKIGbu
下記のような処理で 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);
}
380 :
2017/01/31(火) 12:08:39.86 ID:7hNNIgfe
モジュールもMLとかと比べてしまうと見劣りはするな
確かにC++よりはマシだけど
381 :
2017/01/31(火) 12:33:39.17 ID:yyJuX8zg
>>379
takes_numsからきちんと返す とか
https://play.rust-lang.org/?gist=12884b1ee4ef3196c70d52f5defacf70
382 :
2017/01/31(火) 14:03:31.13 ID:sCWKIGbu
>> 381
なるほど。そうすると確かにいけますね。
383 :
2017/01/31(火) 15:01:08.68 ID:16SeH9xy
384 :
2017/01/31(火) 17:27:00.00 ID:19P3vDy6
スライスパターンまだ?
385 :
2017/01/31(火) 19:31:33.91 ID:FHFaV7L7
intrinsicsって何?
永遠にunstableとか書いてあるんだけど
386 :
2017/01/31(火) 19:50:54.86 ID:iAIegLum
普通は直接触らない(libstdのstableなインターフェイスを通して使う)ものだから知らなくて良い
どうしても知る必要があるのならまずcompiler intrinsicsでググって一般的なintrinsicsについて調べてからcore::intrinsicsのドキュメントに戻ると良い
387 :
2017/01/31(火) 22:25:40.67 ID:FHFaV7L7
コンパイラ方面の単語なのね
thx
388 :
2017/02/01(水) 16:47:26.59 ID:t+0AKFTt
>>373
javaとかに喧嘩売ると荒れるからやめろや
389 :
2017/02/01(水) 18:13:30.15 ID:UXwydrfk
言語に貴賤なし。プログラマに貴賤大有り
390 :
2017/02/01(水) 18:18:40.81 ID:A+dqSgkk
無理やり荒れさすなや
391 :
2017/02/01(水) 22:27:21.76 ID:swnG7r4K
Rcって1つのオブジェクトを色んな所から参照したいけど複数にmoveさせられない
って時にRcで包んでcloneして複数に増やして使う
内部ではcloneされてかつ生き残ってる参照の数を保持していて
0になったらリソースを解放

GC云々言われるのは一般的にこのアルゴリズムがGCでも使われているから

って認識であってる?
392 :
2017/02/01(水) 23:10:00.44 ID:vXBX0LGU
大体合ってるよ
Weakポインターは解放の判断時にカウントされないこともお忘れなく
393 :
2017/02/03(金) 03:50:46.78 ID:o3QjYKDf
Announcing Rust 1.15 - The Rust Programming Language Blog
https://blog.rust-lang.org/2017/02/02/Rust-1.15.html
ご存知の通りcustom deriveがstableに
それと、rustc自体のビルドシステムがRustで書き直されたとのこと
1.17からはMakefileを完全に廃止する予定で、それによってrustcを書くのにcrate.ioのパッケージを直接使えるようするための道筋か整うんだと
394 :
2017/02/03(金) 03:52:31.61 ID:o3QjYKDf
crate .ioじゃなくてcrates.ioだわ
395 :
2017/02/03(金) 22:09:00.34 ID:TA0AL/qz
お前らこんなめでたい日だってのに静かだな
豆でも撒いてんのか?
396 :
2017/02/03(金) 22:45:31.22 ID:o3QjYKDf
#[derive(Throwable)]
struct Soybean;
397 :
2017/02/03(金) 23:15:20.66 ID:MzXAEQdU
カスタムderiveは良いよね、夢広がりんぐ。

所で Rust 2.0 へのロードマップとか無いのか? 何に至れば 2.0 になるんだ?
398 :
2017/02/04(土) 03:35:44.48 ID:Lsw0X+V5
破壊的変更をするのが2.0だけど、今のところ破壊的変更をしてまで入れたいものはあまりなさそう
399 :
2017/02/04(土) 04:51:36.32 ID:KgCacN16
Incremental Compilation Beta - compiler - Rust Internals
https://internals.rust-lang.org/t/incremental-compilation-beta/4721

Incremental compilationがbeta段階に達したらしい
Nightlyユーザはcargoの実行時に以下のようにしてオプトインできる:
$ CARGO_INCREMENTAL=1 cargo <command>
またはrustcを直接呼ぶ場合:
$ rustc -Zincremental=<path> <other arguments>
400 :
2017/02/04(土) 14:50:05.31 ID:HGLYAiwq
知り合いがRust使ってサーバー書いてたんだけど、グレースフルシャットダウン?すらできないからクソだって言ってたな。
そこんところどうなってるんだろう。この言語そもそもサーバー書く言語じゃなかったりする?
401 :
2017/02/04(土) 18:13:59.54 ID:bWVhQOn0
言語じゃなくライブラリの問題で適当なライブラリがないなら自分で書くものだ
それを自分で書けないのは自分がクソと言ってるも同義だと思うけど
そんな難しいロジックが必要でもなかろうよ > graceful shutdown
402 :
2017/02/04(土) 18:37:54.59 ID:KgCacN16
ドキュメントを読むと、Hyper v0.11(未リリース)からgraceful shutdownに対応してる風の記述が見られる
詳細は知らん
403 :
2017/02/04(土) 22:15:04.50 ID:maiRrllE
>>401
やっぱり言語の問題じゃないよな。
これで心置きなく発言者に甘えんなアホって言えるわサンクス。
404 :
2017/02/05(日) 12:21:31.45 ID:39kPthL5
ところでこのRustとかいう言語、いつになったら全部のシンタックスがStableになるんだい?
それまではC++使ってるからその時になったら起こしてくれ。
405 :
2017/02/05(日) 13:47:47.29 ID:yZbwod3C
おうC++17の策定あくしろよ
406 :
2017/02/05(日) 13:52:10.30 ID:1zIopPJZ
P0292R2のstabilizeマダー
407 :
2017/02/05(日) 13:57:36.06 ID:u0uQCFq0
>>404が永眠してしまった、天国に行けるといいね
408 :
2017/02/05(日) 19:55:33.99 ID:5xwhf5r6
C++0x → C++11
C++1x → C++14
C++1y → C++17
だと思ってたら違った。1xは欠番か
409 :
2017/02/08(水) 18:40:35.01 ID:lAOVscE3
いまだにHashMapを扱う度にborrow checkerと格闘してcloneや一時変数、unwrapだらけになって辛い
自分の技術不足が恨めしい
410 :
2017/02/09(木) 10:17:09.71 ID:X3gAJ9Ta
それはお前の技術不足じゃなくて言語の欠陥だろ。気にすんな。
411 :
2017/02/09(木) 11:56:02.46 ID:LJBL065x
荒し乙
412 :
2017/02/10(金) 05:58:09.39 ID:jFfrPWyu
まあマップ関連はretainの実装も放置されてる状況だしねえ(issue #1338)

ところでstableのマイナーアップデートが来てる
Announcing Rust 1.15.1 - The Rust Programming Language Blog
https://blog.rust-lang.org/2017/02/09/Rust-1.15.1.html
413 :
デフォルトの名無しさん
2017/02/10(金) 17:59:28.97 ID:XNSQcvUK
RustでJVMやFlashPlayer作り直せばJavaAppletやFlashが復活するー?
414 :
2017/02/10(金) 18:00:49.21 ID:hHNUUpqe
しなくていい
415 :
2017/02/10(金) 18:19:20.79 ID:3fWDw1w5
現状のHashMapを普通に使って、他の言語よりmemcpyの量増える?
416 :
2017/02/10(金) 18:19:25.15 ID:rXluJnty
しない。
それらは言語の問題ではなく、政治的な理由で消えたから。
(犯人はMSとApple)
417 :
2017/02/10(金) 19:00:45.32 ID:Q2EFSTbD
普通に使うの定義がさっぱり分からんけど
要素操作のために、必要以上にcloneしないといけない設計/実装してるなら増えるんじゃね

cloneしなくて済むスマートな実装手法を自然に書けるようになりたい
(書けないからいつも推敲してる)
418 :
2017/02/13(月) 10:28:11.76 ID:zwnL86Oa
とうとう火狐がRustなしではビルドできなくなるカウントダウン始まったな。
で、結局Rustはモジカスのオナニー以上でも以下でもなかった件について
419 :
2017/02/13(月) 10:41:16.81 ID:wHhLxWjt
狂気丸出しのレスだな。
420 :
2017/02/13(月) 11:06:35.68 ID:7X0vvEjV
オナニーレスに触るなよ悦んじゃうだろ
421 :
2017/02/13(月) 11:14:21.57 ID:l/JrB4B7
assert!(!(Rust >= モジカスのオナニー));
assert!(!(Rust <= モジカスのオナニー));
assert!(Rust.is_nan() || モジカスのオナニー.is_nan());
422 :
2017/02/13(月) 11:31:22.65 ID:7X0vvEjV
let cum_amt = mozilla.masturbate()
.to(Some(rust))
.duration(Duration::from_secs(30))
.finish();
423 :
2017/02/13(月) 11:49:18.40 ID:zwnL86Oa
実際モジカスのオナニーを超える範囲で使われてるならその事例教えてくれよ。
火狐みたいなオナニーブラウザの自作自演以外でよ。
424 :
2017/02/13(月) 11:49:18.81 ID:zwnL86Oa
実際モジカスのオナニーを超える範囲で使われてるならその事例教えてくれよ。
火狐みたいなオナニーブラウザの自作自演以外でよ。
425 :
2017/02/13(月) 11:56:22.97 ID:VFoQx1wb
キチガイはすぐファビョって連投を始める
426 :
2017/02/13(月) 13:51:05.15 ID:THrV6nDM
ドユコト?
やっぱりD言語の方がいいってこと?
427 :
2017/02/13(月) 14:39:04.19 ID:zwnL86Oa
他が良いとかじゃなくてこの言語の実用性がないっていう単純な話なんだが。
これ使うくらいならC++の方が(Rustの謳い文句に反して)はるかに使いやすいしちゃんとものができる。
だからモジカスのオナニーでしかないって話。
428 :
2017/02/13(月) 18:36:27.18 ID:3XLU4PQN
あなたに何の魅力も無いのに、あなたの主観的な評価に意味を見出だせない
実際に触ったことがあるなら「Mozillaが開発している&関係が深い」ことを評価の基、あるいはレッテル貼りに使うなんて的外れなことはしない
もっとまともな批判なら相手する人もいるだろうよ
429 :
2017/02/13(月) 21:28:32.27 ID:7X0vvEjV
ID:zwnL86OaがいくらRustを嫌おうがお前にとってのRustの有用性が変わるわけでもないんだからほっとけよ
430 :
2017/02/13(月) 22:11:11.49 ID:2CyLjYwO
C++はツギハギだらけでダメだろ
431 :
デフォルトの名無しさん
2017/02/13(月) 23:19:53.96 ID:8+uLQ/Rs
ひとまずRustで安全なJavaVMを作って><
432 :
2017/02/13(月) 23:51:37.77 ID:g/I/A31s
実際Rustに不満がないわけではないが、せめてどこを改善すべきかくらい言えんのか……
個人的にはライブラリ周りがコミュニティ頼り過ぎるのもうちょい公式主導で整備できんもんかねと思う。
433 :
2017/02/14(火) 00:44:04.76 ID:qahXd/u8
chronoの作者とかもついに音を上げちゃったしなあ
ああいうのも本来は公式が主導してしかるべきものだわな(rust-lang-deprecated/timeの代わりとして)
434 :
2017/02/14(火) 07:37:19.09 ID:W2b/azRY
主要なものすら外部にブン投げるスタイル、面白くて好き
chronoがダメなら次が出るだろうよ
435 :
2017/02/14(火) 08:11:42.74 ID:JAgDzlFN
音を上げたっていうののソースは?
https://users.rust-lang.org/t/chrono-0-3-released-and-the-future/9340/7
ここ見るとまだまだやる気に見えるが。
一人でやるの限界だからコミュニティ化したいとは書いてあるけど。
436 :
2017/02/14(火) 08:21:59.52 ID:s4KAVx3x
世間ではそれだけで音を上げたという。
ちょっとヘルプ求めただけでも。
437 :
2017/02/14(火) 08:24:38.08 ID:w7iikRzO
I had significant energy depletion that has prevented me to do *anything* that is not a daily jobって相当やで
実際しばらくはmerge commitばかりやってたわけだし
438 :
2017/02/14(火) 08:38:47.54 ID:JAgDzlFN
音を上げたっていうからてっきりunmaintainedになったもんだと。

というか時刻系ライブラリまで外注とかRust流行らせる気あんのか?
439 :
2017/02/14(火) 08:41:04.32 ID:JAgDzlFN
いや、言語のコンセプト考えるとそこはlibc叩いてなんとかせいって感じか。
440 :
デフォルトの名無しさん
2017/02/14(火) 09:01:28.39 ID:MfKEp5BT
libcの時間系の関数ってシステム時刻の変更が影響あるものしかなくて足りなく無い?
結局clock_getimeとか環境依存のが必要になる感じ
441 :
2017/02/14(火) 09:29:23.11 ID:he6YB8dM
きっとうるう秒が悪い
442 :
2017/02/14(火) 10:17:09.44 ID:gRGlEM3t
Goがなんだかんだ受け入れられたのってこの手のライブラリをほとんど公式で提供してるのもでかい気がした。
443 :
2017/02/14(火) 10:29:11.59 ID:DOzUz97u
Rust's 2017 roadmap
https://blog.rust-lang.org/2017/02/06/roadmap.html
> Rust should have 1.0-level crates for essential tasks


公式もやる気を見せてるしがんばってほしいね
444 :
2017/02/14(火) 13:02:14.37 ID:yamMgOVS
D言語ももう少し根性見せろや
445 :
2017/02/14(火) 13:37:21.21 ID:EX/xGDf7
純粋な疑問なんだが今のRustがDに勝ててる点ってケツモチ企業がいること以外になんかあったっけ。
コミュニティ規模的にはそこまで差はないよね?
446 :
2017/02/14(火) 13:46:33.71 ID:W2b/azRY
いつもの謎のD言語推し
何がお前をそうさせるのか
447 :
デフォルトの名無しさん
2017/02/14(火) 15:50:24.26 ID:ze+N1Rxh
githubでfork数10倍差があるんだけどコミュニティ規模に差がないって何基準?
448 :
2017/02/14(火) 17:25:27.66 ID:EX/xGDf7
Stackoverflowの質問数から、Rustの言語自体の難解性差っぴいてだいたい同じくらい
449 :
2017/02/14(火) 17:37:38.79 ID:qahXd/u8
https://github.com/search?q=language%3ARust
>Repositories 6,413
https://github.com/search?q=language%3AD
>Repositories 5,754

先発の言語でこれな時点でねえ
450 :
2017/02/14(火) 18:24:47.18 ID:tJceDBsJ
新しい言語ほど、時刻とか日付とかは鬼門だよ
ナノ秒まで扱わせろとか元号に変換させろとかうるさい注文が来るんだから
451 :
デフォルトの名無しさん
2017/02/14(火) 18:26:17.87 ID:uwayiWk9
Dのtimeは混乱してるようにみえる
452 :
2017/02/14(火) 18:56:33.55 ID:qahXd/u8
let ymd = (date.year(), date.month(), date.day());
let era = if ymd >= (1989, 1, 8) {
'H'
} else if ymd >= (1926, 12, 25) {
'S'
} else if ymd >= (1912, 7, 30) {
'T'
} else if ymd >= (1868, 1, 25) {
'M'
} else {
'?'
};
453 :
デフォルトの名無しさん
2017/02/15(水) 08:45:00.92 ID:nJh54DV/
日本の元号を標準ライブラリに入れろなんてバカ存在するの?
454 :
2017/02/15(水) 10:42:25.80 ID:9ZjtEPYx
日本のIT人材水準のゴミクズ加減からするとあり得んとも言い切れんのだよな。
455 :
デフォルトの名無しさん
2017/02/15(水) 11:05:55.95 ID:N3aAX75A
>>453
TimeZoneサポートしてる言語で元号入ってるのあったんじゃね
456 :
2017/02/15(水) 11:40:15.46 ID:Eq8lnkGd
>error[E0008]: cannot bind by-move into a pattern guard
あああああ! guard内ではborrowしかしてねえだろ殺すぞ!
457 :
2017/02/15(水) 12:24:37.27 ID:er7cKMeE
ちょっとワロタ、コード切り出して張り付けてみ?
考えてやんよ
458 :
2017/02/15(水) 12:58:26.10 ID:Eq8lnkGd
当初書きたかった奴がこんな流れ
guard内ではCopyをimplしているs.xしか使用していないから本来moveの必要はないはず
https://play.rust-lang.org/?gist=c2c1e71a7579c10edfe2e9ceea98f9fc

こうしたらコンパイルが通ったけど、elseあたりがとてもキモい
https://play.rust-lang.org/?gist=12985ffd8cef76c41dd6f3790afa0b42

まあ既にコンパイルは通ってるから直せなくても別に困らないんだけど、なんかキモい
459 :
2017/02/15(水) 13:39:24.49 ID:JsTxjjGi
あんま笑い事じゃないな…自分の手には余るわ。
460 :
2017/02/15(水) 14:48:20.04 ID:kyvGdeQY
Rustが実用に耐えない欠陥言語であることがまた一つ示された
461 :
2017/02/15(水) 15:04:13.32 ID:er7cKMeE
こんなんでどうだろう
ttps://play.rust-lang.org/?gist=22ace15b6d140db6d0c3b007ea155e8b&version=stable&backtrace=0

無用にCopy/Cloneしてんじゃねーよとは思わなくはないけど、多分COWで最適化されて実際はその動きをしない...と思いたい
if elseの気持ち悪さはなくなるから、derive宣言が許されるならこれで回避したい所存
462 :
2017/02/15(水) 15:11:30.78 ID:er7cKMeE
あ、Enum::Vがテスト用に書き換えたままだ
そこは無視してくれい
463 :
2017/02/15(水) 15:56:56.27 ID:JsTxjjGi
一応、RFCにも入ってて実装待ちになってはいるんだな
https://github.com/bluss/rfcs/blob/master/text/0107-pattern-guards-with-bind-by-move.md

馬鹿なことをしない限りは問題無さそうなんだけど、Cell::setとか使われると厄介かも
464 :
2017/02/15(水) 16:16:51.99 ID:8li9lRMw
noneのelseは確かに消したい衝動に駆られざるをえない
465 :
2017/02/15(水) 16:24:22.19 ID:kyvGdeQY
キモい書き方でしか書けない言語って実用性もお察し。
466 :
2017/02/15(水) 16:31:16.56 ID:Eq8lnkGd
実装待ちか……本当に実装待ちの機能多いよね。改善の予定すらないよりはよほどマシだけど

>>461
実際のコードではSに相当するstructがsize_ofで50バイト以上あるようなものだから最適化に賭けてcloneしまくるのも怖いんだよなあ
ただ、将来的に>>463が実装される予定なら一時的なworkaroundとしてそうするのもありかな……
みんな助言サンクスです
467 :
2017/02/15(水) 17:13:01.01 ID:k6zWy9I5
あれれーおかしいぞー、RFC通ったのが一年以上前に見えるんだが……
468 :
2017/02/16(木) 10:31:03.92 ID:Ql+ZhAJA
機能に欠陥がある言語というのもさることながら、
その欠陥に当てるパッチすら一年以上放置。
本当この言語おわってんな。

Cを置き換えるとか腹が痛くなるわ。
469 :
2017/02/16(木) 11:24:08.77 ID:JPLcUbCW
なにかしら貢献しようってのはないの?
470 :
2017/02/16(木) 12:09:50.46 ID:QxzW1FU8
触んな触んな
471 :
2017/02/16(木) 12:10:46.27 ID:AljdSsft
平和なRustスレに粘着アンチが出る程メジャーになったか。
472 :
2017/02/16(木) 18:35:45.29 ID:jxTm1qP3
この言語じゃなくても、そろそろ流石にC/C++の後継言語は出てきて欲しいぞな
473 :
2017/02/16(木) 18:40:43.39 ID:RfRD56xR
サーバサイドにはgoが、iOS/macOSにはswiftがいるじゃん
マルチOSのコアライブラリという残りのパイでrustは芽を出すといいなぁ
nimよりはマシではないかと思っている
474 :
2017/02/16(木) 20:59:32.12 ID:VUboIYs6
C/C++の後継を考えると変数宣言はType val形式じゃないと受け入れられないでしょ。
Rustはvar val:Type形式だし
475 :
2017/02/16(木) 21:05:18.40 ID:dGmRkXVH
そんな些細なことに拘る奴おらんで。
476 :
2017/02/16(木) 21:18:32.52 ID:RfRD56xR
>>474
ワロタ、生ポインタがーならまだしもそんな所を突っ込むかw
477 :
2017/02/16(木) 21:30:01.61 ID:WlZ7N49H
システムプログラミングってもなあ
その下のハードウェアAPIがまずC/C++だしunsafeまみれになるくらいならC++で別に... となりがちな予感
478 :
2017/02/16(木) 21:48:54.09 ID:kTImIXI/
お前、rustでシステムプログラミングしたことないだろ
下層レイヤーをunsafeでラップして中層以上はrustだけで書くからunsafeだらけにはならないよ
unsafeだらけになるような書き方する奴がC/C++で書いたら生ポインタ弄り回したり、独自macroで汚したりする予感
479 :
2017/02/16(木) 21:50:51.71 ID:QxzW1FU8
-sys crateは良い文化
480 :
2017/02/16(木) 22:52:06.05 ID:kEY1d4Ow
c++ の後継は c++ 自身だろ。
おれはもう別言語にしろと言いたいけど。
481 :
2017/02/16(木) 23:16:50.76 ID:Ctthh1M5
rustcにCやC++が残ってる限りrustがC/C++の後継に成りきれない何かがある
482 :
2017/02/16(木) 23:20:52.50 ID:DGgcs6h7
>>474 val: Typeの方が文法的に良いのよ。
Type val単体だとそう弊害は無いんだけど、例えばジェネリクス<>を使うことにするとA<B> x; っていう文が宣言なのか比較演算してるのかパーサが分かりにくいとか、
キャストを(Type)xっていう文法にしたら x + (A) (y)っていう式はyをAにキャストしてるのかA(y)という関数なのかが分からないとか、
パーサに型やらシンボルの種類とかいう文脈を保持させる必要が出てくる。
おかげでCもC++もJavaもまともにパースしようとすると手で書いた方が良いってくらい面倒になってる。
483 :
2017/02/17(金) 00:33:46.93 ID:yhaDaC8E
llvmをrustで書き直そう
484 :
2017/02/17(金) 00:53:54.84 ID:sPCLdDuU
そもそも変数の宣言を型名で表す文法と型推論の相性が悪すぎるでしょ
485 :
2017/02/17(金) 01:13:10.67 ID:9N3wqPif
とりあえず2017年のロードマップ完遂したらC++の後継候補くらいには正式になれそうな感じがする。
486 :
デフォルトの名無しさん
2017/02/17(金) 05:44:50.97 ID:ICuCz4ej
ゲームエンジンをパフォーマンスそのままでRustで書き直せたら後継といっていいんじゃなかろうか
487 :
2017/02/17(金) 08:06:47.24 ID:nCBINic8
>>483
SQLiteをRustで書き直そう
488 :
2017/02/17(金) 10:52:00.95 ID:jHhPXKUT
linuxをRusuxにすればcの後継
489 :
2017/02/17(金) 11:12:03.68 ID:3FtIr36J
490 :
2017/02/17(金) 14:07:26.39 ID:eFr6pWHl
491 :
2017/02/17(金) 18:21:18.09 ID:5sY5yHIi
FireFoxをRustで書き直そう
492 :
2017/02/17(金) 18:59:34.73 ID:ZDBavghI
Servo
493 :
2017/02/17(金) 19:18:49.28 ID:sPCLdDuU
ServoをRustで書き直そう
494 :
2017/02/17(金) 20:52:51.39 ID:jHhPXKUT
アセンブリ部分が残ってもんなもんどーでもいいんだよ
Cで書いてる部分をrustに置き換えたら十分って話
アセンブリ言語部分を置き換えたいなんて一言も言ってない
495 :
2017/02/17(金) 21:22:35.36 ID:krcZKPEA
先ずはlibcompiler-rtから
496 :
デフォルトの名無しさん
2017/02/17(金) 22:06:03.85 ID:y4+T5net
>>442
だな
497 :
2017/02/18(土) 09:19:54.20 ID:PNO7DmhT
>>494
>>15

同じ話を何度されてもなw
LinuxをRustで書き換えればーの話はよほど変な角度から攻めないと無理
498 :
2017/02/18(土) 10:17:07.05 ID:bUHmqYrs
>>491
それは既に部分的にやってるんだっけ

>>497
499 :
2017/02/18(土) 12:01:36.21 ID:xPVYVI1A
Cow使うとライフタイムパラメータがstructの最上位まで伝搬してしまうのですが
これはそういうものとして受け入れるしかないですか?
500 :
2017/02/18(土) 20:39:36.76 ID:Ul87se3O
Cow<'static, T>なら伝播しないけど、'staticを必須にしたい場面は少ないよねえ……
501 :
2017/02/19(日) 01:05:13.21 ID:s3EB+fhT
後継言語は名前からしてD言語じゃないと
502 :
2017/02/19(日) 06:50:46.22 ID:v/sHJsoq
名前だけは後継
503 :
2017/02/19(日) 08:30:58.18 ID:2oS2o7no
ライフタイムは上に伝搬しないとコンパイラ的にもプログラマ的にも困ると思うの
504 :
2017/02/19(日) 08:34:53.71 ID:v/sHJsoq
実際にはelisionでCow<T>と書けることも多いしな
505 :
2017/02/20(月) 18:49:57.67 ID:ehHRa0XE
こんな書き方できたのか!!!
fn x((a, b): (u32, u32)) {}
506 :
2017/02/20(月) 22:04:29.62 ID:97wV3Rfs
別にそんな書き方出来なくてもいいよ
507 :
2017/02/20(月) 23:14:15.09 ID:mI2RJMjC
単なるタプルを引数にした関数で、呼び出しもタプルだよなぁ・・・

と思って試したら、やっぱり呼び出しも
x((1, 1));
で書く必要があった!!!

どういうケースで使うんだよ、このタプル引数の関数
508 :
2017/02/20(月) 23:38:34.63 ID:ehHRa0XE
fn foo(Foo(a, b): Foo) {}
509 :
2017/02/21(火) 08:08:29.59 ID:KVrlVIJb
落ち着けただの構造化束縛だ。
ttps://play.rust-lang.org/?gist=c66f3f420befbdc37090ec793ebb9735&version=nightly&backtrace=0
510 :
2017/02/21(火) 08:12:10.81 ID:KVrlVIJb
structural matchするの忘れたけどパターンマッチも構造化束縛も両方パターンだよ。
511 :
2017/02/21(火) 08:20:55.82 ID:eTJT09tJ
ああ、そういうことか
>>508の言いたい事を理解しようと首を傾げてたけどfn fのtypoなんだろうな
それとタプル引数関数の関係性は分からんけど、それはもう考えまい
512 :
2017/02/21(火) 08:24:42.94 ID:9Kn0UuQq
>>505の時点で「関数引数でパターンマッチ出来たのか」ということを言っていたんじゃない?
513 :
2017/02/22(水) 01:07:33.12 ID:s4CGuq4I
>>511
>>508のfooは関数名でFoo(a, b)はtuple structに対する構造化束縛で
右辺のFooは引数リストの1つめの仮引数への型注釈だよ。

静的言語だからパターンが現れるとたまたまLHSと型注釈の両方に型名が出てくるの。
これがもし動的言語ならLHSに型名はでてこない。

// js
function foo([a,b]){}

ちなみにa,bは分解された束縛。
514 :
2017/02/22(水) 11:24:58.93 ID:IzdwqWc0
https://www.reddit.com/r/rust/comments/5vbr31/nonlexical_lifetimes_using_liveness_and_location/
もっとborrow checkerが賢くなってくれたら嬉しい。個人的にはimpl Traitよりもありがたい
515 :
2017/02/22(水) 11:25:33.44 ID:dczNCglp
crates.ioのダウンロード数のグラフがすっげえ見づらくなってる
516 :
2017/02/23(木) 09:04:21.53 ID:zngwxGAX
Rust Project Developersが直々に乗り込んでコード書いて、Rustが一番早いぜとか言い出す姿勢ほんとすこ
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=knucleotide
517 :
2017/02/23(木) 09:41:00.54 ID:dRZrz+vD
ワロタwww
しかし、流石にC言語勢がプライドかけて1位奪取に走ると思う
518 :
2017/02/23(木) 10:36:58.61 ID:IXi6HShy
コストかけるとこほんとそこじゃねえんだよ。
こりゃ某S系質問サイトで人気トップなのもステマだろうな
ステマで人気を膨らましてその実実用にもならないクソ言語
クソモジラがケツモチしてるんだからステマで人気水増ししてるのも当然の帰結と言えるか
519 :
2017/02/23(木) 13:08:05.53 ID:H4R0mXRf
人気水増ししたら何かいいことあるの?
ステマするほどの価値があるようにも思えないが。
520 :
2017/02/23(木) 13:16:02.83 ID:LSEhsWdS
>>519
自分もこんなゴミステマしても虚しいだけだと思うんだが、
どうやらモジラにとってはこの言語が流行ってくれないと困るらしい
だから「これからはRustの時代!」みたいな工作をStack某とか上のベンチマークとかでやってんだろう。

最近ロゴ変えたことといい、どうもクソモジラはOSS界の電通目指してるくさいな。
521 :
2017/02/23(木) 13:25:43.94 ID:U3ebhjnw
Rustが流行る
=> Rustで実装されたServoの完成度が上がり流行る
=> ServoがWebkitの代わりに使われる
=> Servo組み込みサポート費用がMozillaに払われる

随分と迂遠なMozillaの経営改善計画だったんだよ!と頑張ってみる
ステマされて困る人はパイを奪われるWebkit関係者かな?
522 :
2017/02/23(木) 13:30:47.35 ID:zngwxGAX
競争相手はWebKitでもEdgeHTMLでもなくBlinkやろとマジレス
523 :
デフォルトの名無しさん
2017/02/23(木) 13:44:41.82 ID:LSEhsWdS
>>521
それ本気で言ってるとしたら中の人乙としか言いようがないな。
524 :
2017/02/23(木) 14:32:01.45 ID:eozO90Y3
クソ連呼厨ってID変えられるのかよ
525 :
2017/02/23(木) 14:51:38.09 ID:zngwxGAX
nixを始めとする一部のRust関係プロジェクトのプルリクエストを管理している@Homuとかいうbot、あれって誰の趣味であんな風になったんだ……?
526 :
2017/02/23(木) 14:51:48.47 ID:LSEhsWdS
>>524
別に理由もなくクソ連呼してるわけでもないんだがな。
CやC++で簡単に書けることもコンパイラに弾かれて書けないわ
そもそもシンタックスが未完成だわ
ライブラリも貧弱で、かつCライブラリ使うためのラッパも
unsafe層とRust層の二層無駄に必要だわ
これを実用言語としてごり押しするクソモジラの良識のなさが一周回って笑える
もともとモジラに良識なんてないけどさ。
527 :
2017/02/23(木) 14:56:46.73 ID:yq/Deji1
危険な操作をコンパイル時点で弾いてくれるのがRustの売りなのにそこで文句を言ってるのは根本的にミスマッチしているとしか
528 :
2017/02/23(木) 15:07:19.45 ID:LSEhsWdS
>>527
危険な操作とか言い出す判定がクソすぎて明らかに安全なパターンもはじいて来るだろ。
おかげでボイラープレートなコードが増えること増えること。
そこをなんとかごまかすための文法拡張の導入は機能に関係ないとかで後回し
ついでに型もうるさい上にドキュメント見ても返り値の型がわからんで型合わせが総当たり

確かに物が何一つ作れないという意味では安全だわな。危険なものも含めて一切できないから。
529 :
2017/02/23(木) 15:11:18.18 ID:U3ebhjnw
そろそろD言語推しが参戦しそう
swiftスレの荒しが波に乗らなくて遊びにきたんだろうから、少し待てばまたあっちに戻ると思うよ
530 :
2017/02/23(木) 19:22:05.86 ID:cQa0oJ+5
>>528
どうせクソコードなんだろう
無能のクセに文句だけは一流
531 :
デフォルトの名無しさん
2017/02/23(木) 19:36:29.28 ID:9wlFqT9C
>>519
>人気水増ししたら何かいいことあるの?
Rustライブラリの開発者が増える→ライブラリが充実する
532 :
2017/02/23(木) 20:03:57.20 ID:cNXolJMY
Rust勉強したら何が作れんの?
C#とJSで何でも作れるご時世で
533 :
2017/02/23(木) 20:11:53.29 ID:eZ3ictl+
「言語Aで何でも作れること」と、「言語Bで作れるもの」に
どういう関係があるのか
534 :
2017/02/23(木) 20:15:09.50 ID:zngwxGAX
実際にお前らが何を作ってるのかは気になるな
crate公開したりしてんの?
535 :
2017/02/23(木) 20:25:56.16 ID:LSEhsWdS
>>530
そういう、Rustコンパイラ通らなきゃクソコードって思い込みが一番腹立つんだよ
536 :
2017/02/23(木) 20:42:34.44 ID:oSrrQwof
>>535
でもそうなんでしょ?
537 :
2017/02/23(木) 21:00:48.13 ID:LSEhsWdS
>>536
Cでバグなく動いてたコードが移植できない時点でな。
538 :
2017/02/23(木) 21:06:08.32 ID:SG08isVj
動いてるだけで、そのコードバグ有るんやで。
お前には分からんのだろうが
539 :
2017/02/23(木) 21:06:35.79 ID:FuQeN9Oq
へえバグないんだ良かったじゃんわざわざRust使わなくても済むね

>>534
人に尋ねるときはまず自分から晒すのが礼儀やで
540 :
2017/02/23(木) 21:11:35.09 ID:LSEhsWdS
そうだよ。だからずーっとRustは使う必要ない、つーかそもそも言語として欠陥品、クソモジラのステマで流行ってるように見えてるだけだ
っつってんのに、誰一人まともに聞きやしねえ。
まあこんなスレで称賛してるあたりステマ部隊なんだろうが。
541 :
2017/02/23(木) 21:15:20.74 ID:vAxbMLg6
ID:LSEhsWdS
今日の患者さんはなかなか元気だな。
542 :
2017/02/23(木) 21:15:27.70 ID:eZ3ictl+
どうせRustがスタンダードになることは無いんだから
嫌なら使わないで済ませられないの?
周りに熱心な布教野郎がいて迷惑してるのか
543 :
2017/02/23(木) 21:17:02.17 ID:kHt4tzR1
Rustの美しさを一つあげたい
それはクロージャの記述

// rust
let f = |x| x + 1; // 美しい
f(123); // 美しい
g(|x| x + 1); // 美しい

# ruby
f = lambda {|x| x + 1} # 汚い
f = ->(x) {x + 1} # おぞましい
f.call(123) # 汚い
f.(456) # 見苦しいドット
f[789] # 悲しい
g {|x| x + 1} # 見苦しい中括弧

// javascript
var f = x => x + 1; // 見苦しい矢印
f(123); // 美しい

// c++
auto f = [](int x) -> int {return x + 1;}; // もはや悲惨
f(123); // 美しい
544 :
デフォルトの名無しさん
2017/02/23(木) 21:19:45.77 ID:sZtROie8
C++の -> int は省略できるやろ
545 :
2017/02/23(木) 21:30:27.03 ID:LSEhsWdS
>>542
周りっつーか上司が誰に吹き込まれたのか既存のC資産をRustに書き換えろとかふざけた話を下ろしてきた。
チーム全員現在進行形でぶちギレてて今度上司の上司と話つける予定よ。
546 :
デフォルトの名無しさん
2017/02/23(木) 21:35:29.77 ID:sZtROie8
>>545
なにそれ、Rust使ったことなくてスレ見てるだけだから別の言語覚えながらリファクタリングとかむしろ羨ましいんだけど。
547 :
2017/02/23(木) 21:36:35.33 ID:eZ3ictl+
>>545
あぁ、マジで実害あるのか…
でも上司だってこのスレ見て決めたわけじゃない、ここで憂さ晴らししてもしょうがないだろ
まあ大変だろうが頑張ってくれ
548 :
2017/02/23(木) 21:37:38.93 ID:LSEhsWdS
>>546
なんだ使ったことないのに称賛してたのか。
関数一つ移植するのに半日とかザラで発狂しそうになるぞ。
悪いことは言わんから本当にやめとけ。
549 :
デフォルトの名無しさん
2017/02/23(木) 21:38:33.89 ID:sZtROie8
>>548
え?称賛なんかしてないけど?
550 :
2017/02/23(木) 21:41:45.75 ID:LSEhsWdS
>>549
うらやましいとか言われたからRust好きでたまらんのかと思ったわ。
551 :
2017/02/23(木) 21:48:04.84 ID:DPtsYYmf
LSEhsWdSはプログラミングセンス無いからこの業界辞めた方がいい
552 :
2017/02/23(木) 21:49:23.09 ID:TLItgOP3
元コードにバグがないと仮定して、CコードがRustに移植できない例考えてみたが、
グローバル変数にバッファプール置いてるとかだと確かにストレートな移植はできなさそうだな。
553 :
2017/02/23(木) 21:54:24.67 ID:LSEhsWdS
>>551
Rust基準でプログラミングセンス語るクソモジラ信者乙。
554 :
2017/02/23(木) 21:58:31.77 ID:zngwxGAX
合わない現場で無理やり使わされてるってことなら災難だね
分かったからここで鬱憤を晴らすのはやめてくれ
555 :
2017/02/23(木) 22:04:06.85 ID:TLItgOP3
LSEhsWdSがブチギレてることは伝わったが、その怒りは言語じゃなくて上司に向けるべきなんじゃねーかな。
556 :
2017/02/23(木) 22:05:57.88 ID:NuCuZGCr
マ板でやれ
557 :
2017/02/23(木) 22:08:46.56 ID:SG08isVj
>>555
ID:LSEhsWdS にそれが出来たら、こんなところで暴れてないんだよなあ。
558 :
2017/02/23(木) 22:09:53.57 ID:cNXolJMY
Rustのどのへんがぶちギレポイントなのか詳しく
それなら少しは有意義やろ?
559 :
2017/02/23(木) 22:14:46.67 ID:X5Zb9v7q
>>525
homuの作者
560 :
2017/02/23(木) 22:17:35.80 ID:kHt4tzR1
もいっちょRustのいいところ
foldの自然さ

// rust
let a = [1, 2, 3].iter().fold(100, |acc, x| acc + x); // 美しい

# ruby
a = [1, 2, 3].inject(100, :+) # 文句は無い
b = [1, 2, 3].inject(200) {|acc, x| acc + x} # 初期値とブロックを離して書くのが寂しい

(* OCaml *)
let a = List.fold_left (+) 100 [1; 2; 3];; (* 文句は無い *)
let b = List.fold_left (fun acc x -> acc + x) 200 [1; 2; 3];; (* funと->がやっぱり気になる *)
561 :
2017/02/23(木) 22:32:19.67 ID:K3Cm2dtr
>>552
ノード間のリンク構造が頻出してると、移植できなくはないが、Rust初心者はコンパイルできなくて詰む
あと、変数を強引にキャストしまくってるようなやつは、移植初心者にはつらそう
562 :
2017/02/23(木) 22:43:51.07 ID:8gwVa+zN
syntax気にするだけならsmalltalkやるよろしアル
563 :
2017/02/23(木) 22:49:52.60 ID:rTUbWHRo
>>558
borrow checkerにマジでキレる5秒前
なんかrustコーディングしてるとあいつとアームレスリングしてる気分だよ
564 :
2017/02/23(木) 23:12:24.86 ID:ItvUsJzd
グラフ構造とか他のメンバ変数への参照をメンバ変数に持ってる構造体とか
あと、borrow checkerに怒られる場合にその箇所の修正だけで済むのか根本的に間違ってるのか分からないことが多くて困ることが多い
565 :
2017/02/23(木) 23:26:16.38 ID:TLItgOP3
確かに構造体の中に何らかのデータの借用持ってるとだいたい頭がおかしくなって死ぬな。
566 :
2017/02/23(木) 23:27:05.57 ID:9wlFqT9C
>>560
JavaScript
var a = [1,2,3].reduce((acc,x)=>acc+x, 100);
567 :
2017/02/23(木) 23:28:39.85 ID:zngwxGAX
Rustの良さは徹夜明けに書いたコードでもSEGVらない安心感()
568 :
2017/02/23(木) 23:33:26.07 ID:JrwuNkgj
移植だけなら全部unsafeにすればわりと機械的に出来るような気も。
そのあとリファクタリングでunsafe取っていくかそのまま放置かは状況次第だけど。
569 :
2017/02/23(木) 23:35:46.51 ID:9wlFqT9C
nullチェック機構がどれだけ強固になろうともそれを回避する手段が容易であれば糞プログラマを排除しないかぎり糞コードは量産される
570 :
2017/02/23(木) 23:42:42.37 ID:UGVUxePL
JavaScriptなんて使うくらいならいっそCとEmscriptenで書きたいわ
571 :
2017/02/23(木) 23:45:15.15 ID:TLItgOP3
>>570
ところでRustとEmscriptenでWebasm吐くって出来るんですよね。
572 :
2017/02/23(木) 23:58:21.84 ID:DPtsYYmf
その言語にはその言語の書き方考え方というのがある
高級言語使いが低級言語を使えない言語扱いしてるのと同レベルの幼稚な文句
ただひとつ言えるのはこいつは無能でセンスもゼロ
573 :
2017/02/24(金) 01:32:47.64 ID:/cLlv/nZ
>>543
> // rust
> let f = |x| x + 1; // 美しい

この |x| x + 1 のどこが美しいか理解不能
この後で悲惨と書いてるC++のと50歩100歩のアドホックな書き方

Schemeなどの (lambda (x) (+ x 1)) のほうが遥かに構文が統一的で美しい
574 :
2017/02/24(金) 08:44:12.21 ID:F/TDaiUX
rustってJavaからJNIでCを呼び出すのと何が違うのっと
575 :
2017/02/24(金) 08:46:52.43 ID:VQegiGIK
何を煽りたいのっと
576 :
2017/02/24(金) 10:20:37.37 ID:Lvwt6BNZ
>>574
1. Rustはネイティブコードにコンパイルされる
2. Rustの構文制約はJavaと比べ物にならないほどキツい(良し悪しはともかく)
3. Javaのほうが圧倒的に過去資産がある
こんなもんか
577 :
2017/02/24(金) 11:20:14.42 ID:Eio5IVQ5
|x|は単純に?ってなるよな
なんでここだけRubyなんだと。他はC系かML系風味なのに。激しく浮いてる
C++ですらunified(笑)とか言って普通の関数とクロージャを近付けようとしているのに

それとは別に、開き括弧と閉じ括弧が同じなのも後々困らねーかと思ってしまう
578 :
2017/02/24(金) 14:20:48.79 ID:fnwYTLZ/
構文はもっとMLに寄せてほしいなあ
{ } とか見たくない
579 :
2017/02/24(金) 17:22:18.52 ID:sBRqP5fz
do end よりは {} のほうがマシ (個人的に)
580 :
2017/02/24(金) 17:24:16.93 ID:t5bNNBCg
シンタックスの話をしだすと結局好みの問題に落ち着く
581 :
2017/02/24(金) 18:23:00.24 ID:Eio5IVQ5
C++がtemplateと<< >>演算子で散々苦労しているのを見た後で
わざわざそれを踏襲したりするのは悪い方の好みじゃね?
582 :
2017/02/24(金) 18:39:46.43 ID:zaWF9UZ/
手のひら返し:クロージャの表現はやっぱML系のほうが優れてる可能性
クロージャを返すクロージャというふうに、連なったときの表現を見る

(* OCaml ウルトラスムーズ。呼び出し部分もシンプル *)
let f = fun x -> fun y -> fun z -> x + y + z;;
print_int (f 1 2 3);;

// rust move無しで書けたならよかった?
// |x| |y| |z| x + y + z; ←うーん?
let f = |x| move |y| move |z| x + y + z;
println!("{}", f(1)(2)(3));

# ruby こうして見ると意外な統一感を感じなくも無い
f = lambda {|x| lambda {|y| lambda {|z| x + y + z}}}
p f.(1).(2).(3)

>>573
rustのが断然シンプルだと思うけど(構文の統一感とやらについてはさておき)
あとlisp系言語の中でSchemeだけがクロージャの扱いが自然なんだっけ?
ちなみにまったく理解してないし、しかも聞きかじりで、多分記憶違いだけど

>>577
そもそもはSmalltalkのブロックの中の縦線なのかなぁ
583 :
2017/02/24(金) 23:22:20.10 ID:yM4uvxXG
>> 582
> そもそもはSmalltalkのブロックの中の縦線なのかなぁ
それならこうした方が自然。

let f = :arg1 :arg2 arg1 + arg2;
let f = :arg1 :arg2 { arg1 + arg2 };

それよりこっちの方が良い

let f = (a, b) -> a + b;

`-> T`が戻り値の型の宣言だからこれはないだろう。

こうもならないだろうね。

let f = [ :a :b | a + b ];

無名関数の引数が:arg1で空白区切りは発狂するやつが出る。

matzがなぜ無名関数の引数リストにSmalltalkのブロックの引数リストの構文じゃなくて
一時変数の宣言の構文を使ったかはわからん。
584 :
2017/02/25(土) 00:07:58.70 ID:jGQ3Wak9
`:arg1` は型注釈と混同する
ラムダ計算風に `let f = \x y. x + y` はどうかな
585 :
2017/02/25(土) 01:20:07.77 ID:hUBRL+mA
パラレルワールドのrust文法を議論してて草生える
お前らは何年前に分岐した世界線にいるんだw
586 :
2017/02/25(土) 04:54:52.43 ID:nJl4hm2p
何で新しい言語が創られるかといえば、それはもう、C++コードのメンテから解放されたいという宿願のためでしょ
587 :
2017/02/25(土) 19:53:48.61 ID:jxiHI5n5
しかし名前が良くないなこの言語は
なんでまたこんな名前にしたんだろうか
588 :
2017/02/25(土) 20:15:31.45 ID:FTYjcOZq
俺は名前は好き
四文字でさえあればいいと思ってる
それよりも嫌なのはifの波括弧

短く書きたいときCなら
if (cond) foo(); else bar();
で、目に優しい

if cond {foo();} else {bar();}
これはたまらなく苦痛
C方式に戻してもらうか三項演算子の導入をしてほすい
589 :
2017/02/25(土) 20:19:33.66 ID:FTYjcOZq
https://doc.rust-lang.org/book/if.html
let y = if x == 5 { 10 } else { 15 }; // y: i32
↑これよりはやっぱ↓
let y = x == 5 ? 10 : 15;
590 :
デフォルトの名無しさん
2017/02/25(土) 20:37:24.76 ID:gF7KaGBm
>>588
それがC言語でどれだけのバグを生み出してきたか考えたら有り得ないと思うのだが。
”俺は間違わない?” だったらC使ってればいいんじゃね?
591 :
2017/02/25(土) 20:39:21.20 ID:FTYjcOZq
>>590
どれだけのバグを生み出してきたの?
592 :
デフォルトの名無しさん
2017/02/25(土) 20:42:35.76 ID:gF7KaGBm
593 :
2017/02/25(土) 20:43:00.57 ID:AAACSty6
適用の順序が一見して分からないケースがあってクソ
594 :
2017/02/25(土) 20:48:49.11 ID:FTYjcOZq
>>592
ほえー
あーifに波括弧大事、これがあるからやっぱ波括弧大事だなぁ
波括弧ないからこそこんなことになっちゃうんだなぁ
波括弧さえあればこれ避けられたのになぁ
波括弧無しのifなんてあり得ないよなぁ
ってこと?

あとはどれだけのバグを生み出してきたの?
595 :
2017/02/25(土) 20:58:23.81 ID:AAACSty6
>>592を一般化した
if (cond)
  foo();
  bar();
の形式(ただし全角スペースはインデントの代わり)のバグはAppleの例に限らず普遍的なものだろ
596 :
デフォルトの名無しさん
2017/02/25(土) 21:03:09.97 ID:gF7KaGBm
>>594
多くのコーディング規約で禁止されてる。(例えばGoogle C++ Style Guideとか)。
わざわざそういう項目がある理由は、まぁ言わなくても解るよね?
597 :
2017/02/25(土) 21:04:36.43 ID:OjMnqw5o
僕はそんなコード絶対に書かないしレビューでも見落とさないんですうううううう!!!!!
万一紛れ込んでもテストで拾うしっ!!!!!!!!!!
598 :
2017/02/25(土) 21:08:17.05 ID:FTYjcOZq
>>596
ちょっと茶化したけど、理屈は分からないというわけではないよ

実際にrustのifがこうなってる経緯は知らないけど
現状について少なくともそういう視点で支持する意見があるのは正直驚いた
勉強になりました
599 :
2017/02/25(土) 21:11:22.58 ID:ihKm/PIs
ifのやらかしは有名なプロジェクトでもあったりするよね
600 :
2017/02/25(土) 21:16:11.60 ID:oY1Z/R8w
別に見づらくないじゃんって意見のほうが多数な気がするけど
https://github.com/rust-lang/rust/issues/1698
601 :
2017/02/25(土) 21:17:27.66 ID:A0aZ5Z9S
ブレインファックじゃないんだから、人間に読めるコードとなる言語仕様が必要
602 :
2017/02/25(土) 21:20:30.53 ID:AAACSty6
まあ実際のコードでは無理に一行にまとめず5行に分けろってことだな
let x = if cond {
f()
} else {
g()
};

もしf(cond ? g() : h())みたいな形で使おうと思っていたのなら、そもそもそれ読みづらいから一旦バインドしてからその結果を使おう
let x = if cond {
g()
} else {
h()
};
f(x);
603 :
2017/02/25(土) 21:22:26.82 ID:oY1Z/R8w
あと波括弧外せるようにする提案はここにあるから+1しとけ
https://github.com/rust-lang/rfcs/issues/1616
めっちゃ劣勢だけど
604 :
2017/02/25(土) 21:30:13.94 ID:FTYjcOZq
>>602
一点だけ

let x = if cond {
g()
} else {
h()
};
f(x);

↑これよりやっぱ↓これが読みやすい(個人の感想です)

f(cond ? g() : h())
605 :
デフォルトの名無しさん
2017/02/25(土) 21:51:13.57 ID:gF7KaGBm
f(cond ? g() : h() ? q() : r() )
と書く奴が現れるデメリットの方がでかいと思うわ
606 :
2017/02/25(土) 21:53:07.56 ID:OjMnqw5o
そしてfだのgだのが本当にただの関数呼び出しであるケースは少ないという
607 :
2017/02/25(土) 22:40:54.42 ID:Cjys9ebm
波括弧外せなくてもいい派だけど、
三項演算子は何かいい感じのやつを追加してくれ
608 :
2017/02/25(土) 22:48:27.45 ID:jxiHI5n5
if式なら三項演算子はいらないよ
609 :
2017/02/25(土) 23:00:24.91 ID:BrkcZ5hg
if-elseの波括弧外したらtype ascriptionが曖昧になる。
610 :
デフォルトの名無しさん
2017/02/25(土) 23:54:27.38 ID:+Hmh+RyZ
>>604
ioでも使ってろ
611 :
2017/02/25(土) 23:57:17.74 ID:jxiHI5n5
f( if cond { g() } else { h() } )
612 :
2017/02/25(土) 23:58:32.04 ID:0X9bWbPB
3項演算子とか、関数型の基本のif式(if文じゃないよ)なんだけど、サポートしてねえのかよ
613 :
2017/02/26(日) 02:13:52.49 ID:Xq2/OYkK
三項演算子なんてifが文になってる言語でようやく存在を許されるものじゃねえか
波括弧をダサいというのは分かる
614 :
2017/02/26(日) 02:26:37.59 ID:kIbkRe9i
if x > 0 { x } else { -x }
if (x > 0) x else -x
個人的にはブレースなしだとelseの前後1トークンの範囲の視認性が低く感じる
615 :
デフォルトの名無しさん
2017/02/26(日) 02:27:19.95 ID:hKGUofZ0
if文はSwiftやGoとの差別化をしたいってこと?
616 :
2017/02/26(日) 11:17:28.79 ID:dRlELnWs
波括弧省略はLinuxカーネルの連中が使い続けてる。
奴ら頭良いからあれでも上手く回ってるんだろうな。

逆に、波括弧省略するなって言われてる奴らは信用されてないってことなんだよ。
617 :
2017/02/26(日) 11:28:50.68 ID:kIbkRe9i
そうだね
俺は当然ながら、例えばGoogleの人たちなんかよりよっぽど頭が悪いからブレースは省略しないよ
618 :
2017/02/26(日) 12:56:41.32 ID:ilyf8Ugu
自覚があるのはよろしい
頭の悪い人は無理に波括弧省略しなくていいんだぞ
だれもそれを咎めはしないし止めもしない
619 :
2017/02/26(日) 13:14:04.69 ID:j+1S0ikr
ソース管理がしっかり運用されてると
空の波括弧さんありがとう!!と感謝する機会が多くなる
620 :
2017/02/26(日) 13:42:37.90 ID:n9+kiTzj
if文の波括弧は例え1行でも省略すべきではないな
621 :
デフォルトの名無しさん
2017/02/26(日) 13:57:31.18 ID:AijJH6kn
>>616
残念だけど常に付ける派だが省略するななんて言われたこと無いからそんな煽り無駄
それに自分だけじゃないんだよ。信頼出来るメンバーだけで開発するならRustを使う必要なんてない。
622 :
2017/02/27(月) 14:37:50.15 ID:8fV4SlqM
>>588
激しく同意
623 :
2017/02/27(月) 14:55:00.32 ID:IwI2aqEg
ifの波括弧強制は多いに賛成
Rustは設計思想からして堅牢性が重視する言語なので
むしろ波括弧無しは設計思想に反する構文
624 :
2017/02/27(月) 18:31:01.83 ID:3oI2dcr0
SwiftもGoもモダンな言語のifは{}必須だからRustもそうなんだろう
625 :
2017/02/27(月) 19:58:29.36 ID:LZ77JUIB
ちなみにOCamlだと
ttps://ocaml.org/learn/tutorials/if_statements_loops_and_recursion.ja.html#beginend
let max a b = if a > b then a else b;;
でありウルトラシンプル

複数にしたいときは丸カッコかbegin-end
if 1 = 0 then
print_endline "THEN"
else begin
print_endline "ELSE";
failwith "else clause"
end;;
if 1 = 0 then
print_endline "THEN"
else (
print_endline "ELSE";
failwith "else clause"
);;
こういう世界だと波括弧よりもbegin-endがシックリきてるように見えなくもない
626 :
2017/02/27(月) 20:06:13.47 ID:zLpKV4Hz
英数字が多過ぎて慣れてないと通常の識別子と瞬時に弁別できない
627 :
2017/02/27(月) 21:47:19.08 ID:C84dJOXo
慣れ慣れ
冷静に考えてみ?中括弧だって別に見やすい記号じゃない
628 :
2017/02/27(月) 23:55:54.57 ID:/1/jo1+J
シンタックスハイライトの有無で全然違う
629 :
2017/02/28(火) 00:02:16.49 ID:JC90/ck5
>>627
俺も慣れだと思う
括弧あった方が統一性があって俺はむしろ見やすい
630 :
2017/02/28(火) 00:20:31.68 ID:hQ8vIQRp
wwwww
631 :
2017/03/01(水) 13:27:14.36 ID:dbhoX2Op
今の日本のRust界隈って、LT会を開いて100人は集まるくらいの規模なのか
https://rust.connpass.com/event/48826/
632 :
2017/03/01(水) 14:13:16.39 ID:SH8mWFxK
>>631
そういうのに集まるのって、入門が趣味の人でしょ
633 :
デフォルトの名無しさん
2017/03/01(水) 22:45:28.30 ID:gWF4n/wu
誰だって最初は入門から始まる。
臆するな、前へ進めよ。
634 :
2017/03/02(木) 17:47:06.67 ID:5xdornxH
Rust Language Server alpha 2がリリース。かなりインストールしやすくなってる
https://github.com/rust-lang-nursery/rls
635 :
2017/03/02(木) 18:10:52.07 ID:io4sIXyE
C++とかから来た人はrustでも波括弧使わせられるの?やだーwのイメージ
636 :
2017/03/02(木) 19:04:04.08 ID:u/9aEmwY
sever-clientモデルのコンパイラってどうなんだろうね
一周回ってクライアントモデルが良いなってことにならなければ良いけどと心配してる
637 :
2017/03/02(木) 19:24:21.19 ID:dGAZp2xa
文字セットが貧弱でCのトライグラフ使ってた時代を思い出せ、とか
638 :
2017/03/02(木) 22:21:45.15 ID:TuErB/Pj
>>636
language server protocolはコンパイラじゃない。
rustだけのものじゃないし。
639 :
2017/03/02(木) 23:53:09.94 ID:unB1K5KY
ビルドツールって言い回しでもいいけど、結局そういうモノが使えるのかという疑問なんだが
MSが切った規格っぽいけど、MSは使ってて流行ってるのかねぇ
640 :
2017/03/02(木) 23:58:57.23 ID:5xdornxH
流行るかどうかは知らんが、使って見た感想としては、racerで不十分だったエラーチェックやgo to definitionとかもあってそれなりに快適
不満があるとすれば、初期化に時間がかかる(ただし2回目以降は少し速い)のと入力の度の解析に少し時間がかかる(ただしcargo checkよりは速い)のとキャッシュがクソでかいところかな
641 :
デフォルトの名無しさん
2017/03/03(金) 02:48:30.02 ID:NOi6E2uI
Rust(錆)
流行ることなく誰にも使われず錆びていくプログラミング言語、それがRust
ルストハリケーン
642 :
デフォルトの名無しさん
2017/03/03(金) 02:50:44.93 ID:8SEA7Mtt
language server protocolはビルドツールでもない。
エディタでコード補完とかフォーマットとか(VisualStudioのIntellisenseのようなもの)を実現するためのプロトコル。
エディタの機能拡張のためのものだよ。
643 :
2017/03/03(金) 05:22:56.35 ID:Mo/AGisi
Ryzenなら、rustcも爆速になる?
https://twitter.com/FuAnTaJi/status/837313090190467072
644 :
2017/03/03(金) 05:26:52.91 ID:bMgzQydB
Rustスレで語るほどの話題でもないな
645 :
2017/03/03(金) 05:46:13.37 ID:Dlw1K2JE
>>642
話がズレてんぞ
「Rust Language Server」(ソフトウェア)の利便性/実用性を問うているのであって
「language server protocol」(プロトコル)の利便性/実用性を問うているんじゃない

>>640
ああ、キャッシュはクソでかいのか...
元コードや依存crateに比例するだろうけど多少の利便性のために使って良いものか微妙なのかなぁ
646 :
2017/03/03(金) 06:25:02.22 ID:bMgzQydB
まあクソでかいと言ってもdebug buildのキャッシュに少し欠けるくらいだけどね
逆にいえばdebug buildと同等のオーダーで容量を食うということだが
647 :
デフォルトの名無しさん
2017/03/03(金) 08:53:13.29 ID:8SEA7Mtt
>>645
ビルドツールとかいって何に使うものかも解ってない >>639 みたいなのが居たから書いたのに話がずれてるって…
648 :
2017/03/03(金) 09:37:43.14 ID:NTvASRIg
それでもその程度(debugビルド)か
提供体系変えたからってそれ以上は減らないだろうから
結局は、サーバクライアントモデルにメリットがあればって所なのな, 情報thx
649 :
2017/03/03(金) 10:21:19.53 ID:Ufz5V5uO
LSPをサポートしてれば、エディタ/IDEそれぞれに特化したプラグインを作らなくていいところが良い
まあracerもそうだけど。後は非同期的なのも重い処理にはいいかもね
650 :
2017/03/03(金) 18:34:23.36 ID:NTvASRIg
IntelliJのRustプラグインはRLS対応メンドイから当分見送りな!とか言ってるんだよねぇ
エディタ/IDEのフロントエンドは作り込み必要だし、LSP共通でできることって結構薄いレイヤーなんだろうな
651 :
2017/03/03(金) 23:51:37.58 ID:JBnTbtYi
Rainicorn開発して自前でon the fly error checkやってたRustDTが
LSPが発表された途端にRustLSP開発始めたのにRLSがでてきて完全に沈黙中。
(´・ω・)カワイソス

LSPはリファクタに使える問い合わせもできるから
RLSとIDE側が対応すればrustのツールで初めてのリファクタ機能が現れるかも。
652 :
デフォルトの名無しさん
2017/03/08(水) 03:21:51.70 ID:DeDFMxZF
http://i.imgur.com/WTFdXwM.png

Rustのメモリ管理が良く分からないので
脳内整理してみたけどよく分からない
653 :
2017/03/08(水) 07:03:46.86 ID:jgMpoXzS
このごちゃごちゃで整理とか笑える。
654 :
2017/03/08(水) 07:23:54.02 ID:CjJNAnlh
コメ返してるのウケる
655 :
2017/03/08(水) 07:26:21.29 ID:fOyT060n
こ、コメ
656 :
2017/03/08(水) 10:47:45.16 ID:6Gp+/qzY
よく分かってないから脳内整理もぐちゃぐちゃになってるのではなかろうか
rustはマルチスレッドに影響受けることはないし、他にも理解が出来てない所が多そう

公式ドキュメントが分かりやすいからきちんと読み直したら?
https://doc.rust-lang.org/book/

>>654
ワロタ
657 :
2017/03/08(水) 13:45:42.21 ID:68sDUGxJ
何が分からないのか分からない状態。borrowじゃなくてownershipが分からないのか、スタックとヒープが分からないのか。
658 :
2017/03/08(水) 13:59:22.48 ID:jMX+hATM
>>652
java臭い
659 :
2017/03/10(金) 08:50:25.22 ID:mPQwWGXM
>>455
JavaにはJapanese Eraあるな
660 :
デフォルトの名無しさん
2017/03/11(土) 03:15:58.35 ID:ls0F4O8F
Rustで作ったプログラムを公開するとき

Rust自身のライセンス文書と
crateで含めた各パッケージのライセンスと各パッケージが依存するパッケージのライセンスを
含める必要があると思うんですが

それらのライセンス文書をかき集めるcargoのコマンド等あったりしますか?
( ~/.cargo/registry/src/ 下にパッケージのソースファイルやライセンスファイルがあるのは分かってるんですが手動で集めるのは面倒なので・・・)
661 :
2017/03/11(土) 08:13:55.49 ID:kL5whW8F
HyperのTokio化が間近まで迫っているわけだが、かなり仕組みが変わってて対応が面倒臭い
662 :
2017/03/11(土) 08:15:11.10 ID:x2OoeTeG
DASH言語
663 :
2017/03/11(土) 08:16:44.20 ID:hkT0qMWn
そういえばhyperってcharsetから自動でデコードしてくれないのかな
664 :
2017/03/11(土) 08:19:31.82 ID:qKzUYLvE
>>662
まずは言語を動かすプロセッサーを作るための半導体から調達するのかな
665 :
2017/03/11(土) 08:24:05.78 ID:kL5whW8F
Charsetはhyperの領分からはかなりかけ離れてるんじゃないかねえ。reqwestですら対応しなさそう
666 :
2017/03/11(土) 08:46:49.37 ID:qKzUYLvE
charsetは別に良いけど、Content-Encodingは対応してくれないのかなぁ
667 :
2017/03/11(土) 09:04:48.56 ID:kL5whW8F
>>666
gzipに関してはreqwestのupstreamで既に対応している
https://github.com/seanmonstar/reqwest/pull/61
いつリリースされるのかは分からん
668 :
2017/03/11(土) 12:10:28.94 ID:nSjuwCRc
reqwestにモリモリとFeature Request投げつけて肥大化したライブラリにすればいいんじゃないかなぁ!

それを横目に、reqwestに代わる極最低限の機能をピックアップできるライブラリの登場を期待したい
tomlのoptionalで切れるのでもいいんだろうけど、crate分けてくれた方がrustらしい気がする
669 :
2017/03/12(日) 13:51:15.74 ID:oPHiMgG4
Rayonの1.0 milestoneが残すところドキュメント関連のみとなって1.0が秒読みという感じでとてもよろしい
SerdeだのHyperだのRayonだのという目玉crateが軒並みpre-1.0なままなのは気持ち悪いからなあ
670 :
2017/03/12(日) 15:37:08.34 ID:O3/Gyy1q
Windows版はVisual C++ 2015 Build Toolsをインストールする必要があるってことだけど、
これのライセンスってどうなってるの?
Communityと同じだったらうちの会社じゃあ使えないことになるけど、はっきり書いてある
ところが見つからない。
671 :
デフォルトの名無しさん
2017/03/12(日) 15:41:23.49 ID:U4Jjwa7O
>>670
インストーラーが表示しないの?
672 :
2017/03/12(日) 17:13:31.76 ID:O3/Gyy1q
なるほど。ライセンス条項を表示して「同意する」にチェックを入れさせるいつもの奴じゃないから
スルーしそうになったけど、いちおうリンクが見つかった。ありがとう。
673 :
2017/03/14(火) 00:27:55.78 ID:olV+TTff
#[allow(unuseed_variables)]
じゃなくgolangみたいに
let _ = hoge;
とプレースホルダでコンパイル通したりする?
674 :
2017/03/14(火) 00:32:20.78 ID:UwSzXh4Z
>>673
それでも良いし、let _piyo = hoge;でも良い
675 :
2017/03/14(火) 22:39:18.78 ID:pGPNuxtq
ていうかallow(unuseed_variables)とプレースホルダはぜんぜん違うぞ
676 :
2017/03/14(火) 22:54:53.45 ID:UwSzXh4Z
まあ確かに、unuseed_variablesなんてlintはないしな
677 :
2017/03/15(水) 09:52:08.89 ID:65dLeHL5
うぬ種(unuseed)、、、これには深い秘密が

unused_variablesとプレースホルダ、ワーニングを消すために使うなら同じバイナリ出力するがな
traitのインターフェース切る時はプレースホルダ使ってる
678 :
2017/03/16(木) 22:41:36.30 ID:KeMWtB7g
そういえばC++だとリリースビルドで消える変数はmaybe_unusedいるんだよな。rustかしこい!
679 :
2017/03/17(金) 03:23:47.24 ID:bRwtX1Af
Announcing Rust 1.16
https://blog.rust-lang.org/2017/03/16/Rust-1.16.html

・staticとconstのlifetimeがデフォルトで'staticになった(RFC 1623)
// つまりこれが
const ENC: &'static [u8] = b"0123456789ABCDEF";
// こう書ける
const ENC: &[u8] = b"0123456789ABCDEF";

・consider using an explicit lifetime的なメッセージを廃止(不正確な内容を吐くことがあるから。将来安定すれば復活の可能性あり)

・cargo checkが追加(実際にコンパイルせずにコンパイルが通るかの検査だけを行う。cargo buildより時間の短縮が見込める)

・Cargo.tomlのpackage.categoriesがstableでも有効に
680 :
2017/03/17(金) 21:17:58.70 ID:OBbyZsQw
b‘\x0a‘を”a”に一発で変換する関数ってライブラリにある?自分で書かないと無理?
681 :
2017/03/17(金) 21:33:20.90 ID:bRwtX1Af
format!("{:x}", b'\x0a')
682 :
2017/03/17(金) 22:53:52.43 ID:OBbyZsQw
>>681
マジでありがとう
こういうときはformatなのね
683 :
2017/03/18(土) 00:10:31.46 ID:c1jSzzlC
cargo checkサブコマンド、エラー内容によっては挙動がおかしいんだよね。
cargo test --no-runなら完走する。それかrustcは問題ないから直接rustc叩く。

infinite typeが循環してるとrustcが止まらないのと組み合わさると
rustcがcargoに制御返さない→cargoが無言決め込むになって何が起こってるのかわからなかった。

>>682
自前で弱い動的型付け言語並みのto_string()実装しても良いんだぜ?
684 :
2017/03/18(土) 01:29:52.32 ID:ZU/olwx/
標準ライブラリでは任意の記数法(62進数とか)を扱えないから自前でフォーマッタを定義してちょいちょいする羽目になることがある
std::fmt::fmt_radixは1.9で消えちゃったから、この手のものを公式で提供する気はなさそうだし
685 :
デフォルトの名無しさん
2017/03/18(土) 02:04:48.97 ID:sCZDN2Pv
Hideyuki Tanakaさんのツイート: "https://t.co/EoxWy8cSvV 多くのベンチでRustがC++より高速なコードになってきたみたい。"
https://twitter.com/tanakh/status/842326121647505408?p=p
686 :
デフォルトの名無しさん
2017/03/18(土) 10:03:15.93 ID:cTWPUp3Z
>>685
いいね
687 :
2017/03/18(土) 10:48:58.61 ID:HHPgXzoi
vec![“data”,“chou-data” ...みたいなのがあって
出現する要素の数をカウントする一番賢い方法ってなんじゃろ?
688 :
2017/03/18(土) 10:53:52.98 ID:ZU/olwx/
vec.iter().filter(|&&s| s == "predicate").count()
とか?
689 :
2017/03/18(土) 11:13:48.52 ID:HHPgXzoi
要素全てのカウントで
“data”は3回 “chou-data”は20回という情報が欲しいです
mutなHashMapでシコシコカウントですかね?
690 :
2017/03/18(土) 11:26:04.35 ID:G5NG4rX0
multisetは使えない? 外部クリートを使うことになるけど
691 :
2017/03/18(土) 11:36:10.64 ID:Y4C9s3ir
てかそもそもどういう操作にどのくらいの計算量を要求しているのか言ってくれないと答え損にしかならないというか
692 :
2017/03/18(土) 11:40:29.03 ID:DBFuVmGN
要素→int のマップを用意して、配列の頭から走査して行って出現ごとにインクリメントが正道じゃね。
693 :
2017/03/18(土) 11:49:38.08 ID:HHPgXzoi
ありがとうございます
とりあえずmultisetのソース見て勉強してきます
694 :
2017/03/18(土) 18:38:07.11 ID:zyxHQlVL
“data”と“chou-data”の2種類しかないなら一方だけ数えて全体の要素数から引けば両方求められるんじゃね
695 :
2017/03/18(土) 19:49:33.18 ID:PBtATWqK
ゲームとか作るのにはまだつらい感じ?
696 :
2017/03/18(土) 22:51:11.48 ID:kQkqB4BZ
ss
697 :
2017/03/18(土) 23:36:17.52 ID:Cy4FObwW
そういえばコレクション操作で統計用の述語足りてないよね。
他にもあらゆる標準ライブラリ的なものが足りてないからそういうライブラリばかり作られてるんだけど。

>>695
pistonに一通りある。
698 :
2017/03/19(日) 06:16:46.07 ID:Q49RXSlY
Nightlyでcargo updateをしようとしたら
thread 'main' panicked at 'called `Option::unwrap()`
云々とか出てきて何事かと思ったら、どうやらRust TeamがGitの操作をミスってnightlyが壊れてたらしい
https://github.com/rust-lang/rust/pull/40625
699 :
2017/03/21(火) 23:01:00.46 ID:hxyeHBes
高階関数に渡す述語のinline属性の指定にかかわらず
そこだけ必ずインライン化するか必ずインライン化しないか指定する方法ない?

Option::map_or_elseに渡すdefault引数とf引数がinline属性付いてるけどインライン化させたくないんだけど。
700 :
2017/03/24(金) 07:34:18.46 ID:yNGhLANb
Stack Overflowの調査でまたしてもRustが最も好まれている言語になった
https://stackoverflow.com/insights/survey/2017#technology-most-loved-dreaded-and-wanted-languages

が、エンタープライズでの採用例が少ないのだからユーザのうち好んで使っている人の割合が高まるのは当然っちゃ当然だわな
701 :
2017/03/24(金) 08:53:30.74 ID:mOA6Vf99
みなさんfloatのベクタのソートについてどう思ってるの?
702 :
2017/03/24(金) 14:35:58.01 ID:pHNq00OZ
>>683
こば?
703 :
2017/03/24(金) 19:39:57.65 ID:YSCc9yI+
>>700
良い言語なんだけどまだ安定感が足りない感じなんだよなぁ、web系だとclojureがイミフな位安定感あるのと違って
rustはもっと期待されている分バージョン間の差違に敏感な用途が多いからじゃないのかと思うけど。
704 :
2017/03/25(土) 03:50:37.57 ID:BrrX4e7P
Tokio-minihttp is number 4 in TechEmpower Round 14 Preview : rust
https://redd.it/615sjf
204KB

新着レスの表示

★スマホ版★■掲示板に戻る■全部前100次100最新50

名前:E-mail: