プログラミング言語 Rust 3 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/05/21(日) 14:04:29.55ID:9L9dm7b/
Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。

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

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

◆前スレ
プログラミング言語 Rust 2
http://echo.2ch.net/test/read.cgi/tech/1478023960
2017/06/04(日) 03:50:33.29ID:fD7zpG1M
>>141
FAQにも無いように見えたしググり方も分からなかったんや
ありがとナス
143132
垢版 |
2017/06/04(日) 10:44:11.97ID:rLXx1OCs
>>133
そこにもlifetime指定できたのですね。ありがとうございます!
2017/06/04(日) 14:04:24.56ID:W9jPbq7z
C++のとき=で右辺の状態が変わるのが人間の直観によろしくないと
非常に明白な結論が出てるのに
なんで変えなかったんですかね

思考が著しく阻害される
2017/06/04(日) 16:24:39.76ID:8nnj2TqC
記号が <- だったらよかったのにって?

まあ慣れだと思うけど。
2017/06/04(日) 16:28:32.85ID:Ukp5iwZo
それを言い出したら左辺の状態が変わるのも"直感によろしくない"しなあ
147デフォルトの名無しさん
垢版 |
2017/06/04(日) 16:42:30.55ID:qUWZGkRh
>>145
代入ってよく使うのに2文字はだるすぎ
慣れれば=でも問題ない
2017/06/04(日) 16:58:15.24ID:2L30Nwvk
お前ら非常に明白な結論になんてことを・・・
149デフォルトの名無しさん
垢版 |
2017/06/04(日) 17:07:01.45ID:zptvcWS6
>>51
valgrindの扱えない 一般のuse-after-free って何だ?
2017/06/04(日) 19:25:09.29ID:rwHtuE7A
>>149
メモリ以外も含めたリソースの解放後の使用って意味じゃね?ファイルとか
2017/06/04(日) 21:24:44.90ID:Ukp5iwZo
>>150
ファイルに関してはValgrindには--track-fds=yesがあるから例として微妙では
もうちょっとドメイン固有なもの、例えばSerdeでDeserializerを2回使うのを防ぐとかの方がありがたみが強そう
2017/06/04(日) 21:40:25.92ID:qOHu1i3Q
valgrindみたいな実行時チェックとコンパイル時の静的チェック比較してどうするの
2017/06/06(火) 00:41:45.73ID:eZ7grxii
https://docs.rs/try/1.0.0/try/

>Since the introduction of the ? operator, its supporters have preffered its use, ignoring the valid criticism of the ? operator almost hiding the error propagation operation.

彼は一体誰と戦っているのだろう……
2017/06/06(火) 02:28:52.15ID:LS7abRGk
というか、try!をdeprecateする話なんてあったか?
Rust 1.13以前をサポートするcrate(特にnursery系)ではバリバリ現役じゃん
2017/06/06(火) 13:02:17.27ID:29cDHiwu
そういや、crates.ioに公開されてるものって
対応してるrustcのバージョンが不明確だな
2017/06/06(火) 21:24:51.99ID:LrtFpx4M
案の定、誰もtokioを使ったことない感じでスルーされつつ自己解決した
ttps://play.rust-lang.org/?gist=42a8464afde50942d9a162f3d1cfe9c0&version=stable&backtrace=0

futuresのAPI分かりづらいよ
zero-costとかそう言う所じゃないレイヤーのI/F設計が頭おかしい気がする
いや、気がするだけでzero-costに注視した場合にそうならざるを得なかったのかもしれんが

とりあえず、奥深いと言うかなんと言うか、tokio及びfuturesの闇の深さが分かったのでちょっと遊ぼう
tokioはstd:netのラッパーで本当に早いの?な感じだったけど、futuresの方は中々に面白い
2017/06/06(火) 21:31:18.02ID:eZ7grxii
mioは本質的にstd::netを使ってなくねなどと重箱の隅を突いてみる
2017/06/06(火) 21:39:21.98ID:LrtFpx4M
tokioもサーバサイドで使うぶんには効率的よ?と直前のレスをちゃぶ台返し

エアプログラミングで卓上で論じる分には楽しいけど、実際使ってみようとしたらドキュメント少なすぎるだろ
futuresのtutorialみたらtokio.ioに飛ばされてスッゲーあっさりとしか書かれてないでやんの
2017/06/07(水) 10:48:52.84ID:oMhdv7bq
な?Rustってまともに使える言語じゃないだろ?
だからもう騙されるのは終わりにしようぜ。
2017/06/07(水) 13:01:49.86ID:AvS1SMln
ソース読めばいいよ
2017/06/07(水) 19:59:59.87ID:CD/BPHg5
言語じゃなくライブラリの問題なんだよなぁ、言語仕様で躓いたPG(笑)はスクリプト言語にでもおかえり

ソース追い回しても分かんなかったよ, crate futuresのソースがC++のマクロ地獄みたいなの
解決したらそりゃそうだと納得なんだが、sink.and_thenのErrとstream.into_future().and_thenのErrが一致しないのは罠だと思った
お前ら両方ともtrait Futureのand_thenなのに違う型をツラっと返すなよな・・・
sinkから作ったFutureとstream(のinto_future)から作ったFutureがand_thenで連結できないのかと悩んだよ
2017/06/07(水) 20:19:54.47ID:xcCDpPBC
むしろ同じエラー型しか返せないとしたら面倒臭いわな
例えばfutures_cpupoolで常にio::Errorしか返せないとかだったら扱いにくいのなんのって
2017/06/07(水) 20:43:02.03ID:CD/BPHg5
Futureの操作元(今回はStream)をエラー時にも返したい時がある的な振る舞いは未だに理解できんぞ
sinkはErrでstreamは(Err, Stream)とかイミフ、どうせなら両方ともタプルにしてくれよ
2017/06/07(水) 20:44:49.12ID:aNYsG6oK
それはそうだが、StreamFuture::Errorの型はあれはちょっとなあ……
所有権を返したいってのはなんとなく分かるが
2017/06/07(水) 20:46:10.36ID:aNYsG6oK
>>164>>162宛てな
2017/06/08(木) 02:32:18.91ID:+DWZ9aoq
reqwest、HTTPヘッダやMIMEタイプまでそれぞれ別個にタイプセーフとかクレイジーだな、いい意味で
いや、hyperのせいか
2017/06/09(金) 01:32:14.88ID:eJzwOC8V
Announcing Rust 1.18 - The Rust Programming Language Blog
https://blog.rust-lang.org/2017/06/08/Rust-1.18.html

pub(restricted)と構造体フィールドの自動並び替えがstabilized
2017/06/09(金) 07:32:46.19ID:2Ut1GWuy
時報が少し賢くなってるwww
2017/06/09(金) 12:48:15.05ID:BBPKL/bd
>>167
ありがとう。
これからも頑張って。
2017/06/09(金) 13:10:04.93ID:+ro9fQGu
pijulってなんだよgitだけでいいだろ
2017/06/09(金) 14:25:21.34ID:2Ut1GWuy
gitよりmercurialが好きです(半ギレ

pijul(とdarcs)は初めて存在を知ったけどほーって感じ
Pull Requestはサービスプロバイダに依存するから、VCS自体にPR管理機能を持つのは良いのかもねぇ
2017/06/09(金) 14:42:06.85ID:8C3OvAmi
pgr
2017/06/09(金) 15:36:57.58ID:CZ4YsNdD
Rustはgithubに依存しすぎだろ
GoogleやMicrosoftも似たようなサービス始めるみたいだし、もっと中立的になった方がいい
174デフォルトの名無しさん
垢版 |
2017/06/09(金) 15:39:14.20ID:F1/ud66B
goもかなり依存してないか?
2017/06/09(金) 15:44:08.83ID:+ro9fQGu
github依存度で言ったらGoよりましじゃないかな?自前でcrates.io持ってるし。
まあgithubに依存してなくてもやらかしたnpm見てるとgithub依存も最悪ではないみたいに思ってしまうがな。

というかgithub以外のまともなホスティングサービスがないのが悪い
2017/06/09(金) 15:49:49.79ID:CZ4YsNdD
Scala/JavaのIvyみたいに、crates.io互換鯖を自由に立てられるようにしようとか
crates.ioのログインにgithubアカウント以外も使えるようにしようとかの動きは無いのかな?
2017/06/09(金) 15:51:15.80ID:+ro9fQGu
まあそれはともかく、gitとhgのサポートが既にあるのに
pijulとかいうまだまともに使えないVCSをwritten in Rustってだけで突っ込むのは
内輪のノリがきつすぎてイタい子なんだなあって感想
2017/06/09(金) 15:52:47.94ID:CZ4YsNdD
>>177
Haskellのdarcs優遇と同じ現象だな
2017/06/09(金) 16:00:58.60ID:+ro9fQGu
>>178
ghcすらdarcsを捨てたと言うのにな。

というか今気づいたけどcargoってSubversion対応してねえのか。pijulとやらより
そっち先じゃねえの?
2017/06/09(金) 16:13:07.06ID:2Ut1GWuy
>>175
bitbucketがあるだろ!!(今度こそマジギレ

sourceforgeのgitサポートがもう少し早ければ幾つかの連立もあったろうけど
sourceforgeは遅れるわGoogle Codeはへっぽこだわでgithub+git一強になったこのご時世は嫌だねぇ

pijulが強制されるわけでもなく、今まで通りcrates.ioホスティングがデフォルトだからgithub(git)に依存してないでしょ
個人的には面白いVCSだとは思うけど、率先して採用するプロジェクトはなさそう
2017/06/09(金) 16:17:48.77ID:CZ4YsNdD
cargoのdependenciesにbitbucketのmercurialを書けるようにするissueは、前に見かけた気がする
たしか、やる気がないわけではないけど、使いやすいライブラリが無い的な返答だったような
直にリンクするとGPLになるとか
2017/06/09(金) 17:16:09.17ID:oDUXzovh
vcs指定すると何がいいの?
2017/06/09(金) 20:27:02.60ID:eJzwOC8V
>>177
内輪云々というか、たまたま気が向いた人がPRを送ってきたから受け入れたってだけの話じゃないの?
それを言い出したら標準ライブラリだってredoxサポートのためのコードがたくさんあるし
2017/06/09(金) 21:39:26.49ID:OWaLz7yy
>>181
普通にrepositoryのURI指定でhg://bitbucket.org/hoge/hageみたいにしとけば動いた覚えがあるぞ
githubもgit://github.com/hoge/hageにするし、VCS, 接続サーバを意識してなくないかな

今更subversionやcvsを使う気は無いけど、誰かPR出してみようぜ
rejectされるなりacceptされるなり、どっちに転んでも笑い話だと思う
2017/06/10(土) 04:46:24.86ID:8idv0Ky2
pijul(ピフル)試してみた
・ドキュメント無さすぎ
・パッチのハッシュがクソ長いし、指定時に省略できない
・SSH周りがいろいろおかしい。agent使えないとか
・エラーメッセージが全く役に立たない。コード読んで初めて原因が分かる感じ
・現在のバージョンを特定するタグ、IDのようなものが未実装
・複数ファイルの追加は一つずつ指定する必要がある。ディレクトリ一括とかダメ
・ワーキングディレクトリ内の未追加ファイルを一覧するコマンドが無い。要記憶力
・ワーキングディレクトリ内の状態を一覧するコマンドが無い
・ファイルとして受け取ったパッチの取り込みを行うコマンドが無いので、自分で.pijulディレクトリの中にコピーするらしい

結論:実用にはあと2年は待ちたい。すぐ使いたいならdarcs使え
2017/06/10(土) 08:42:42.56ID:V34f+MUj
>>185
こんなVCSサポートに入れるとかRustが実用考えて作られてないのがようわかるわ。
2017/06/10(土) 10:47:52.24ID:FHASBQwb
pijul対応はpijulの開発者たちがドッグードするためなんじゃないの
pijul自体がpijulで管理されてるからcargoサポートがないと不便そう
2017/06/10(土) 11:06:43.94ID:Ha8NmJTT
何かRustディスることに血道を上げてる粘着がおるな
自分の言葉で批判しようとするとフルボッコにされるから、最近は他人のまともな批判に乗っかってせせこましいレスしかできなくなってるが
>>159とか>>186とか
2017/06/10(土) 11:21:32.40ID:J2O0ntFQ
触れなくていいんすよ
2017/06/10(土) 13:46:58.55ID:AacmqL/b
Cと++は今世紀いっぱいは現役だからな
それ以外は覚える価値なし
2017/06/10(土) 14:23:08.91ID:8idv0Ky2
>>187
取り込まれたPR見れば分かるけど、VCSサポートって言っても、cargo newの後に
自動で pijul init を呼ぶだけの処理しかしてない

Mercurialのサポートとほとんど同じレベルだが、Mercurialの場合は hg init 呼んだ後に
さらに .hgignore ファイルも追加してくれるとこだけが違う
尚、この自動で追加される .hgignore は文法ミスってて使えない
2017/06/10(土) 14:50:16.11ID:8RIzdpJs
もうgitでいいよ
2017/06/10(土) 16:38:35.42ID:V34f+MUj
なんでお前らはこんな文法はゴミクズ、コンパイラはエラーしか吐かない、ライブラリはカス未満の
クソモジラの息がかかってる言語なんてありがたがってるのか本気でわからんのだが
モジラから金もらってる以外の理由あんの?
2017/06/10(土) 16:43:45.87ID:FHASBQwb
>>191
git://みたいにpijul://みたいなプロトコルのサポートも入ったのかと思ってたけど
initだけなら大した話ではないわな
それぐらいならsvnだろうがcvsだろうが
PR出したら簡単に取り込まれそう
2017/06/10(土) 16:47:08.14ID:FHASBQwb
そういえばsvnはgit init相当の処理はないから
cargo newの時にやることないな
cvsもよく知らないけど同じかな
2017/06/10(土) 17:28:38.55ID:gUDVFMBt
釣られないクマー
2017/06/10(土) 17:34:28.98ID:IftbJTTs
ああ、ほんとそんだけなのか。
pijulリポジトリやhgリポジトリからもcargoとってこれるとかではないんだな。
2017/06/10(土) 19:20:36.29ID:SnVZVp11
--vcs=gitすると.gitignoreも出来るんだね
2017/06/10(土) 19:29:45.37ID:IftbJTTs
ところでThe BookがSecondEdition出てるんだけどこれいつからあるんだっけ
2017/06/10(土) 19:50:13.72ID:8idv0Ky2
誰か、本のレビューしてくれ
この本はこういう人向き〜とか

The Rust Programming Language
https://www.nostarch.com/Rust


Mastering Rust
https://www.packtpub.com/application-development/mastering-rust
2017/06/10(土) 20:32:21.64ID:IftbJTTs
>>200
上の方まさに「The Book」のSecond Editionの書籍版じゃん。
2017/06/11(日) 01:53:28.37ID:X3vCZvzy
食事する哲学者は、なんでThe Bookから消されてしまったんや
203デフォルトの名無しさん
垢版 |
2017/06/11(日) 15:06:17.17ID:qjl5AbWq
>>202
それ、俺も思った。
何でだろう?
2017/06/11(日) 15:56:53.70ID:vIRnRvxr
哲学者達がお腹一杯になったから
2017/06/11(日) 16:22:24.76ID:VsqhFcB6
トンチが効いててちょっと面白かった
2017/06/11(日) 22:30:10.43ID:X3vCZvzy
Second Editionはどういう意図か知らないけど、
"str".to_string()
"str".to_owned()
の代わりに
String::from("str")
を全面的に使うようにしてるね
2017/06/11(日) 23:46:31.76ID:XI3qvjLJ
String("str")みたいなコストラクタは無いの?
2017/06/11(日) 23:49:50.77ID:9OY4agMx
Stringはtuple structでない
2017/06/12(月) 00:27:33.38ID:My6TEn1j
https://crates.io/crates/crates_io_baseline
このcrate、めっちゃダウンロードされてて草生える
2017/06/12(月) 00:29:50.55ID:MzCSF4Ch
容赦なくて草
2017/06/14(水) 09:57:33.18ID:XYFguvYM
Tokio対応したHyperがリリースされたな
これからWebフレームワークも対応していくのだろうか
2017/06/15(木) 18:41:09.39ID:mn+yn6ig
pijul試してたら、なんかいつの間にかファイルが壊れて、テキストとバイナリがまぜこぜになったファイルが出来てしまった
2017/06/16(金) 09:06:23.46ID:ktTRVxgn
またpijulが使い物にならないからrustはだめとか言うおっさんがくるぞ
2017/06/16(金) 10:33:05.72ID:HCcCUJCK
わざわざ呼ぶなバカ
2017/06/17(土) 06:54:44.86ID:yZgGFQR1
Why are there so many Madoka references in Rust's codebase?
https://www.reddit.com/r/rust/comments/6hirku/why_are_there_so_many_madoka_references_in_rusts/

アイコン見てれば、容易に想像できることだが
2017/06/19(月) 14:55:59.38ID:86sO1ieZ
もしかして盾の歯車?
2017/06/21(水) 20:28:41.11ID:LG7VVo4P
crates.ioで、中身無しで名前だけ(たくさん)抑えてる人が居るね
2017/06/21(水) 20:52:10.55ID:0v4/pNjF
crates.ioはスクワッティングし放題だしなあ
http://doc.crates.io/policies.html#squatting
2017/06/21(水) 21:04:58.61ID:LG7VVo4P
rustって名前のcrate登録しようと思ったら、とっくに取られてた
220デフォルトの名無しさん
垢版 |
2017/06/22(木) 19:34:29.89ID:eBYfVtnR
そのうちcratesトロール出てくるぞ
2017/06/24(土) 00:33:06.17ID:61WeFMfR
更新止まったの除くとcrates.io使ってるのあんまりないよ。
ホスティング直接探しに行くとrustのライブラリ結構ある。
それより依存型が欲しい。
2017/06/24(土) 00:34:41.77ID:l9zy63QW
>crates.io使ってるのあんまりないよ。
ドユコト?
2017/06/24(土) 06:06:00.68ID:cy4Nwj8p
>>221
依存型欲しいねー
2017/06/27(火) 21:33:58.01ID:IXk9A5/e
なんでalloca()できないの?
2017/06/27(火) 21:52:44.33ID:b1cqibPI
https://github.com/rust-lang/rfcs/pull/1808#issuecomment-279123540
2017/06/27(火) 22:56:55.59ID:IIq+ol+w
>>225
どゆこと?
より一般化してUnsized Rvaluesにしたけど、Openのまま3か月放置?
2017/06/28(水) 01:29:39.37ID:9yiSXbVJ
>>226
関連するissueがまだopenのままに見える
2017/06/28(水) 11:14:29.14ID:+O8L6XqQ
瑕疵担保責任(かしたんぽせきにん)

瑕疵担保責任のポイント

民法改正で事実上期限が「無制限」になった
バグや設計のミスなどは、瑕疵担保責任
納品物に不具合があれば損害賠償を請求される可能性もある
不具合を指摘されたらすぐに行動をとるべし
軽微なミスでも先延ばししない

http://www.atmarkit.co.jp/ait/articles/1706/26/news014.html
http://itpro.nikkeibp.co.jp/atcl/news/17/052601508/?rt=nocnt

改正法では欠陥に気付いてから1年以内にITベンダーに通知すれば、
通知後5年以内は修正や報酬の減額などを求められるとしている

全ベンダーが泣いた民法改正案を解説しよう その1
http://www.atmarkit.co.jp/ait/articles/1609/14/news009.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_2.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_3.html

ポイント1:修補や損害賠償、契約解除の期限がなくなる

従来あった「瑕疵担保期間は引き渡しから1年」という考えはなくなる。
条文にある通り、注文者は成果物が契約の目的に適合しないことを発見したら、
その「発見したときから1年以内」ならさまざまな請求ができる。発見が10年後なら、
11年後まで請求可能なのだ。

もっとも、現実のユーザーとベンダーの関係でも、たとえ契約書に「瑕疵担保責任期間は納品から1年と」明記されていても、
「2年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、
バグが見つかればユーザーのところに飛んで行き、無償で改修するだろう。
2017/07/01(土) 18:15:18.87ID:v+Q0wrxJ
Futuresに詳しい人教えて

Zero-costを謳ってTraitでコスト削減してるのは理解したんだが
id_rpc(&my_server).and_then(|id| {
get_row(id)
}).map(|row| {
json::encode(row)
}).and_then(|encoded| {
write_string(my_socket, encoded)
})
ってやった場合に
AndThen x2, Map x1を初期化時に作るコストについては
実行時のコストには乗らないから度外視って理解であってる?

Aaron Turonのブログ読んでもそこは言及してないように読めるので教えてくれい
2017/07/01(土) 20:18:30.04ID:9xGm3OAZ
コンパイラの最適化で消えるか、消えないにしてもstackいじるだけだから無視できるほど小さいコストなんだと思う
2017/07/02(日) 07:08:11.19ID:91oxOYnU
んー、その擁護は微妙に納得いかないかな...
AndThen, Mapは状態変数を保持するenumを内包するstructなので消えないはずだよねぇ
まぁstackいじるだけという言い分として、ならば実行時のcallでBoxFutureを返すのはバッドノウハウってことか
BoxFutureを返すのと、Futureを実装したstructを返すのと、どっちがZero-costに近いかは測ってみるか
サンプルだとBox<Future>だけど、Tokioは一律structを実装してるから、後者の方が早いんだろうけども
2017/07/02(日) 11:32:28.47ID:onBZ93I5
すまん、よくよく考えたら実行中にBox<Future>を返すのは動的にステートマシンのタスクを増やす行為だからNGだ
Futureを返さなきゃと.boxed()使ってたけど、素直にPollで結果を包むだけでよかった
2017/07/04(火) 00:00:54.04ID:YlAGoiwI
futuers-rsは

これfutuereじゃねぇじゃねーか、並列計算してないパイプラインをfutuere呼ぶなよ

すぐにfutures-cpupoolを見つける

までが予定調和。

Zero-cost ~~futures and~~ streams in Rust
2017/07/04(火) 09:31:46.73ID:ETZVte8W
これZero-costじゃねぇじゃねーか

Zero-cost(コストがないとは言ってない)

までが予定調和だったわ
下手な自作設計よりは全然コスト軽いけど鵜呑みは良くないね
2017/07/04(火) 10:33:24.16ID:CTMuvV84
まず future の綴を覚えるところからお願いします
2017/07/04(火) 12:20:45.83ID:J0r8gWdS
impl Traitじゃあかんのか?
2017/07/04(火) 13:09:55.73ID:Aj2F4wHv
aturon氏の記事(Zero-cost futures in Rust)を読めば"zero cost"というのは「直にステートマシンを書いたのと同様のコードにコンパイルする」という意味で言っていると分かるはずで、
状態変数があるからzero costじゃないなどという指摘は出てこないと思うのだけど
2017/07/04(火) 13:30:28.66ID:G2IB7Bn2
traitってGoのinterfaceに似てる
って言ったら型警察に起こられるんだろうか
2017/07/04(火) 14:05:06.69ID:At6b76le
>>237


だからコストがないって訳じゃないと理解したんだが
タスク構築のための初期化アロケーションとか、ステートマシンのための状態管理(分岐)の少量コストはあるって解説してるよな

言葉遊びによるZero-cost警察の方なら触ってスマン
2017/07/04(火) 16:29:36.87ID:H2zYYmCe
警察じゃなくても激おこやと思うw
2017/07/04(火) 16:36:55.49ID:o8qoMeE4
zero costは宣伝文句で、zero overheadくらいが妥当では
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況