Mozilla発のプログラミング言語「Rust」のスレです
■公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
■ワッチョイ
スレ建て時、一行目に
!extend:on:vvvvv:1000:512
を入れること
■派生元スレ
プログラミング言語 Rust 4
https://mevius.5ch.net/test/read.cgi/tech/1507970294/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
プログラミング言語 Rust 4【ワッチョイ】
1デフォルトの名無しさん (ワッチョイ 83b3-KDL3)
2017/12/24(日) 18:27:01.98ID:EGydBhQv017デフォルトの名無しさん (アークセー Sxbd-YNmt)
2018/01/13(土) 19:09:49.17ID:zJNsIIn8x >>16の論旨は「MyType<T>は常にVec<T>として扱われても問題ないか?あるならDerefはおすすめしない」だと思うけど、
今回の場合はむしろMyType<T>は特別なことが無い限りVec<T>として使いたいんじゃないの?
今回の場合はむしろMyType<T>は特別なことが無い限りVec<T>として使いたいんじゃないの?
189 (ワッチョイ 392d-FSib)
2018/01/13(土) 20:15:02.44ID:5hbvxbkG0 >>16 読みました
見覚えのあるピンク玉はrust playgroundの中の人でした
「smart_ptrぐらいの同一性がある場合にはDerefが必要だけど
strにDeref<Taget = [u8]>が無いように
Derefだとやりすぎな場合もあるからdelegate構文欲しいよね」
ってなとこでしょうか
strの例は「替わりにas_bytesがあるよ」ということかなと
strとsliceとか他のライブラリを眺めた個人的な結論としては
has_aならAsRef、is_aならBorrowをimplして受ける関数で使い易くしておくのが
Rust的な落とし所なのかなーといった印象です
AsRef, Borrow, Derefの使い分けは宣言的にプログラマの裁量に任されてる感じ
よくよく考えれば自分のコードにもas_xxx, as_xxx_mutが散見されている現状なので
Mytypeにもas_vecを書けばそれでも良かったような気がします
>>17
自分のケースの場合はそもそもMyTypeがいらなくなってしまったもので
Derefはオーバーパワーかなと思ってます
とはいえ smart_ptrのように扱うならDerefが有用ということが
知見として学べたので 大変ありがたかったです
見覚えのあるピンク玉はrust playgroundの中の人でした
「smart_ptrぐらいの同一性がある場合にはDerefが必要だけど
strにDeref<Taget = [u8]>が無いように
Derefだとやりすぎな場合もあるからdelegate構文欲しいよね」
ってなとこでしょうか
strの例は「替わりにas_bytesがあるよ」ということかなと
strとsliceとか他のライブラリを眺めた個人的な結論としては
has_aならAsRef、is_aならBorrowをimplして受ける関数で使い易くしておくのが
Rust的な落とし所なのかなーといった印象です
AsRef, Borrow, Derefの使い分けは宣言的にプログラマの裁量に任されてる感じ
よくよく考えれば自分のコードにもas_xxx, as_xxx_mutが散見されている現状なので
Mytypeにもas_vecを書けばそれでも良かったような気がします
>>17
自分のケースの場合はそもそもMyTypeがいらなくなってしまったもので
Derefはオーバーパワーかなと思ってます
とはいえ smart_ptrのように扱うならDerefが有用ということが
知見として学べたので 大変ありがたかったです
19デフォルトの名無しさん (ワッチョイ 66e8-AMuz)
2018/01/14(日) 07:18:07.14ID:oPMCDJ2h0 >>17
このスレを読んでる人に情報共有してるだけだよ
このスレを読んでる人に情報共有してるだけだよ
20デフォルトの名無しさん (ワッチョイ 66e8-AMuz)
2018/01/14(日) 15:21:10.36ID:oPMCDJ2h0 元スレやばいね
21デフォルトの名無しさん (ワッチョイ 0be8-udNJ)
2018/01/18(木) 23:48:10.50ID:HIA6V+PM0 オライリー届いた。
分厚すぎてわろたわ。読むの大変そう。
分厚すぎてわろたわ。読むの大変そう。
22デフォルトの名無しさん (ワッチョイ b7eb-URfH)
2018/01/29(月) 13:41:23.22ID:P6u1lvxj0 dyn Traitが入ってしばらくしたらBox<Trait>はdisconになるの?
23デフォルトの名無しさん (アウアウカー Sa33-jWYD)
2018/01/29(月) 14:45:47.97ID:gyvOdhISa deprecated扱いになって警告を出し次のepochで削除とかだったと思う
24デフォルトの名無しさん (ワッチョイ b7eb-URfH)
2018/01/29(月) 17:30:10.02ID:P6u1lvxj0 impl Trait入ったらそもそもほとんど使わなくなるから気にしなくていいのか。
25デフォルトの名無しさん (アウアウカー Sa33-jWYD)
2018/01/29(月) 17:48:02.51ID:gyvOdhISa 使うケース減るのもそうだけどepochで機能削除する場合はソースコードの変換ツールが提供されるらしい
あと古いepochのソースはそのままコンパイルできるらしいから特に対応不要らしい
だから新しいepochにしか入っていない機能を使いたいcrateとかでなければ何もしなくても困らないはずだし
その場合でも変換ツール通せば簡単に対応できるはず
あと古いepochのソースはそのままコンパイルできるらしいから特に対応不要らしい
だから新しいepochにしか入っていない機能を使いたいcrateとかでなければ何もしなくても困らないはずだし
その場合でも変換ツール通せば簡単に対応できるはず
26デフォルトの名無しさん (ワッチョイ aee8-URfH)
2018/01/29(月) 21:18:10.28ID:ltX/HOsy0 なるほど
27デフォルトの名無しさん (アウアウカー Sa33-jWYD)
2018/01/31(水) 12:10:20.24ID:/dPh0x6ka28デフォルトの名無しさん (ドコグロ MM32-URfH)
2018/01/31(水) 19:12:32.86ID:hEoUgsMbM epoch releaseってのはどういうことなんだってばよ?
29デフォルトの名無しさん (ワッチョイ 57b3-skLA)
2018/02/04(日) 00:05:25.67ID:VmMujkXk0 map: BTreeMap<K,V>で、keyが無かったら挿入、あったら格納されてる値vに応じて新しい値new_vに更新するか決めるってやりたいんだけど、
let v = map.entry(key).or_insert(new_v);
if ... {
*v = new_v;
}
よりもっと綺麗な書き方ある?
let v = map.entry(key).or_insert(new_v);
if ... {
*v = new_v;
}
よりもっと綺麗な書き方ある?
30デフォルトの名無しさん (ワッチョイ 9f9f-hXWc)
2018/02/04(日) 01:05:26.32ID:qOX3lZ+s0 and_modify() ?
31デフォルトの名無しさん (ワッチョイ f72d-MPJM)
2018/02/06(火) 16:05:20.14ID:95WYpRcW032デフォルトの名無しさん (ワッチョイ 1723-pvQ8)
2018/02/07(水) 00:06:02.34ID:z0wRGtUY0 Rust Never Sleeps: Community Grows, Eclipse-Based IDE Planned
https://adtmag.com/articles/2018/02/01/rust-grows.aspx
https://adtmag.com/articles/2018/02/01/rust-grows.aspx
33デフォルトの名無しさん (ドコグロ MMdf-ytvT)
2018/02/07(水) 10:02:06.97ID:tqZIcWxZM >>31
ええやん
ええやん
34デフォルトの名無しさん (ドコグロ MMdf-ytvT)
2018/02/07(水) 10:05:39.88ID:tqZIcWxZM >>32
eclipseはいらんなあ
eclipseはいらんなあ
35デフォルトの名無しさん (ワッチョイ ffe8-ytvT)
2018/02/07(水) 21:39:04.86ID:HRWlDALX0 オライリー本読んだ?
36デフォルトの名無しさん (ワッチョイ 2ee8-dBQf)
2018/02/10(土) 17:28:13.69ID:EA1ZzrT70 wasmってまだプリミティブすぎて使い物にならないのかと思ってたけど wasm-bindgen すげえな
もうここまでできるのか
もうここまでできるのか
37デフォルトの名無しさん (ワッチョイ 42d2-Q8dp)
2018/02/10(土) 18:48:11.24ID:YRtNT72/0 Rustすごい!
takahito takabayashiさんのツイート: "ファミコンのエミュレータをRust / WebAssembly で書き直した
https://twitter.com/tatakaba/status/961532612723511296
takahito takabayashiさんのツイート: "ファミコンのエミュレータをRust / WebAssembly で書き直した
https://twitter.com/tatakaba/status/961532612723511296
38デフォルトの名無しさん (エムゾネ FF62-W92t)
2018/02/12(月) 12:24:11.46ID:4ugd2bUvF 梅手伝い
39デフォルトの名無しさん (ワッチョイ 457b-Zo0L)
2018/02/12(月) 19:13:38.83ID:g6Vhygc80 苦労して書き直しても全然パフォーマンス上がらないのな…
ぐうの音もでないほど効果があるユースケースってなんなんだ
ぐうの音もでないほど効果があるユースケースってなんなんだ
40デフォルトの名無しさん (ワッチョイ 99b3-bLbK)
2018/02/12(月) 21:38:29.65ID:tHO1NU6P0 アルゴリズムが変わらないならそう変わらんのじゃないか
他人のひどいコードならともかく、同じ人が小規模なプログラムを書き直す程度だと特に
C/C++からRustへ書き直して速度が上がったって話はあんま聞いたことが無い
速いネイティブライブラリを言語に組み込んでるJuliaとかなら、書き直すだけで速度上がったって話はちらほら
pythonだったらnumpy使った方が楽でいいとかも
他人のひどいコードならともかく、同じ人が小規模なプログラムを書き直す程度だと特に
C/C++からRustへ書き直して速度が上がったって話はあんま聞いたことが無い
速いネイティブライブラリを言語に組み込んでるJuliaとかなら、書き直すだけで速度上がったって話はちらほら
pythonだったらnumpy使った方が楽でいいとかも
41デフォルトの名無しさん (ワッチョイ 457b-Zo0L)
2018/02/12(月) 22:31:51.98ID:g6Vhygc80 いやだってjavascriptだぜ?アルゴリズムの問題か?
42デフォルトの名無しさん (ワッチョイ 429f-hB4z)
2018/02/13(火) 11:38:21.89ID:L9OfLhwQ0 リリースビルドしてないとか
43デフォルトの名無しさん (アウアウカー Sa69-JNhP)
2018/02/13(火) 13:55:22.76ID:U6RMU7ria 結局本スレどこ?
44デフォルトの名無しさん (ワッチョイ 429f-hB4z)
2018/02/13(火) 14:01:02.73ID:L9OfLhwQ0 ここ
45デフォルトの名無しさん (ワッチョイ 469f-WY3D)
2018/02/14(水) 10:32:44.85ID:Sny1AUMZ0 c++もそうだがコンパイラに機能を詰め込むってのがそもそも筋が悪い
46デフォルトの名無しさん (ワッチョイ 2e98-BYkA)
2018/02/14(水) 16:35:43.73ID:wToAct7f0 >>45
どういうこと?じゃあどうすればいいの?
どういうこと?じゃあどうすればいいの?
47デフォルトの名無しさん (ワッチョイ e1b3-CEXn)
2018/02/14(水) 18:27:22.03ID:KakS2s960 asm!だよ
48デフォルトの名無しさん (ワッチョイ 469f-WY3D)
2018/02/14(水) 19:14:50.70ID:Sny1AUMZ0 >>46
ライブラリ、もしくはツールに任せる。
ライブラリ、もしくはツールに任せる。
49デフォルトの名無しさん (ワッチョイ ff98-znvk)
2018/02/15(木) 02:06:38.25ID:mcN0VL7z0 >>48
やっぱりちょっと分からないな。
RustやC++のどの辺がコンパイラに機能を詰め込んでると思うの?
ライブラリorツールに任せるってのもどの辺を任せたいのかな?
話がザックリし過ぎて言いたいことがよく分からないんだが。
やっぱりちょっと分からないな。
RustやC++のどの辺がコンパイラに機能を詰め込んでると思うの?
ライブラリorツールに任せるってのもどの辺を任せたいのかな?
話がザックリし過ぎて言いたいことがよく分からないんだが。
50デフォルトの名無しさん (ワントンキン MM7f-yNWa)
2018/02/15(木) 14:13:53.00ID:exgu/6oKM プリプロセッサマクロのことかな?あとは型システムとかGCのことかな?ライブラリに任せるの意味がよくわからんが…
51デフォルトの名無しさん (スップ Sd3f-swnP)
2018/02/15(木) 17:01:00.96ID:OS8rqPvzd C++はコンパイラの方もだけど標準ライブラリでの機能実現も相応に多くて結果ソースの記述が煩雑になっているのは既知の事実でしょう
ライブラリや実装に任せた結果APIの統一が取れなくなって結局細かな仕様策定を余儀なくされたSchemeを見ても銀の弾丸でない事は明らかだよね
それに出来る事を増やすという点においてライブラリは有用だけど変数の不変性や型システムのような制限をする事に関してはコンパイラによしなにしてもらうより他ないよ
ライブラリや実装に任せた結果APIの統一が取れなくなって結局細かな仕様策定を余儀なくされたSchemeを見ても銀の弾丸でない事は明らかだよね
それに出来る事を増やすという点においてライブラリは有用だけど変数の不変性や型システムのような制限をする事に関してはコンパイラによしなにしてもらうより他ないよ
52デフォルトの名無しさん (ワッチョイ f7e0-T3WU)
2018/02/16(金) 01:22:14.41ID:W1XJdyx10 ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
53デフォルトの名無しさん (ワッチョイ ffe8-vS7N)
2018/02/16(金) 07:39:34.93ID:455TYoTb0 やっとstableでrustfmtできるようになったな
54デフォルトの名無しさん (アウアウカー Sa6b-caOl)
2018/02/16(金) 11:54:10.92ID:sOKjApWVa どうせ明日にはまたnightly限定になってるよ
55デフォルトの名無しさん (ワッチョイ 9f9f-RCVW)
2018/02/16(金) 14:44:20.68ID:o2oszjec0 最近のアップデートつまんねえなあ
56デフォルトの名無しさん (ワッチョイ 17eb-moIH)
2018/02/16(金) 15:41:33.96ID:xYOe+Cvi0 >>45は言語仕様の追加、更新が気に入らないんじゃないかな
try!の代わりに?なんて以ての外だ、みたいな?それ以外に思い付かなかったけど
1.0以前に@や~を削除してライブラリにぶん投げた辺りは希望通りな気がする
基本的に電池入りじゃないRustはライブラリやマクロの代わりの言語仕様の追加じゃなく
より効率的なバイナリを吐くための言語仕様の追加が多いイメージだけどなぁ、impl Traitとか
try!の代わりに?なんて以ての外だ、みたいな?それ以外に思い付かなかったけど
1.0以前に@や~を削除してライブラリにぶん投げた辺りは希望通りな気がする
基本的に電池入りじゃないRustはライブラリやマクロの代わりの言語仕様の追加じゃなく
より効率的なバイナリを吐くための言語仕様の追加が多いイメージだけどなぁ、impl Traitとか
57デフォルトの名無しさん (ワッチョイ ff98-znvk)
2018/02/16(金) 17:59:54.40ID:ItA0QsEV0 >>56
あー、そういうこと。?記法は確かに若干違和感あったかもな。
でも実際、あれは便利なんだよなぁ。
File::open(path)?.read_to_string(&mut buf)?みたいに繋げられるから。
try!(try!(File::open(path)).read_to_string(&mut buf))は読みづらい。
かといって、
let mut file = try!(File::open(path));
try!(file.read_to_string(&mut buf))
みたいに2行に分けるのも面倒だし、無駄なローカル変数も出来れば避けたい。
結局、あれが妥当な判断だったと思うけど。
まぁ、stableにする必要あったのか?ってところで賛否両論あるかもね。
あー、そういうこと。?記法は確かに若干違和感あったかもな。
でも実際、あれは便利なんだよなぁ。
File::open(path)?.read_to_string(&mut buf)?みたいに繋げられるから。
try!(try!(File::open(path)).read_to_string(&mut buf))は読みづらい。
かといって、
let mut file = try!(File::open(path));
try!(file.read_to_string(&mut buf))
みたいに2行に分けるのも面倒だし、無駄なローカル変数も出来れば避けたい。
結局、あれが妥当な判断だったと思うけど。
まぁ、stableにする必要あったのか?ってところで賛否両論あるかもね。
58デフォルトの名無しさん (ワッチョイ 9f9f-RCVW)
2018/02/16(金) 19:47:30.32ID:o2oszjec0 box キーワードは何時 stable になるんだ?
59デフォルトの名無しさん (ワッチョイ bf8a-LkcG)
2018/02/17(土) 11:13:34.80ID:J1S1NncJ0 boxキーワードはどういう時にうれしいのかがわからん
60デフォルトの名無しさん (ワッチョイ bf9f-Xz8k)
2018/02/17(土) 11:16:00.80ID:kwPbHgTn0 明らかに二行に分けた方が読みやすいわけだが。
新しい機能マンセー厨ってそういう感覚の狂いについて無自覚過ぎんだよね。
新しい機能マンセー厨ってそういう感覚の狂いについて無自覚過ぎんだよね。
61デフォルトの名無しさん (ワッチョイ ffeb-moIH)
2018/02/17(土) 13:27:59.06ID:Nh87YVhF0 俺も違和感はあるけど、多くの人が賛意を出して採用されたんだから
>>60や俺の感覚が狂ってるんじゃね?自身の感覚の狂いって当然ながら無自覚過ぎんよ
boxは在り様の総意を取るの面倒だし、目下はBoxで運用できてるしで、いつまでもstableに来なさそう
ヒープを多用したい人には文法にあればありがたいんだろうけど、そもそもヒープが好まれんしのう
>>60や俺の感覚が狂ってるんじゃね?自身の感覚の狂いって当然ながら無自覚過ぎんよ
boxは在り様の総意を取るの面倒だし、目下はBoxで運用できてるしで、いつまでもstableに来なさそう
ヒープを多用したい人には文法にあればありがたいんだろうけど、そもそもヒープが好まれんしのう
62デフォルトの名無しさん (ワッチョイ ffe8-vS7N)
2018/02/17(土) 14:16:54.60ID:+W6LcK0d0 boxっていきなりヒープにメモリ確保されるのが保証されたりするんじゃないの?
今はコンパイラ次第じゃん
今はコンパイラ次第じゃん
63デフォルトの名無しさん (ワッチョイ bfe4-Ql/f)
2018/02/17(土) 14:41:36.65ID:IpKTSZVJ0 ironって今メンテされてないのか
最近のweb FWはrocketの方が人気なんかな
nightly専用だからまだ手を付けてないんだけど
最近のweb FWはrocketの方が人気なんかな
nightly専用だからまだ手を付けてないんだけど
64デフォルトの名無しさん (ワッチョイ 9f9f-RCVW)
2018/02/17(土) 20:32:28.58ID:QFQHB0DO0 >>59
https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/box-syntax-and-patterns.html
> このように書くことでパフォーマンスを犠牲にすることなく、柔軟性を確保することができます。
知らないの?
https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/box-syntax-and-patterns.html
> このように書くことでパフォーマンスを犠牲にすることなく、柔軟性を確保することができます。
知らないの?
65デフォルトの名無しさん (アウウィフ FF9b-LkcG)
2018/02/17(土) 23:42:00.44ID:9NiO1PZdF それはInPlaceとかPlacerがあればよくてbox inはただのsyntax sugarでは
66デフォルトの名無しさん (ワッチョイ ffe8-vS7N)
2018/02/18(日) 08:04:09.95ID:SMMCMA600 分解のほうは新しいの?
67デフォルトの名無しさん (ワッチョイ ffeb-moIH)
2018/02/18(日) 08:27:52.42ID:5lvSpjte0 分解の方がよほどsyntax sugarじゃないのかいな
NightlyのInPlace, Placer使わなくても、Stableの環境でmacro使って実現出来そう
NightlyのInPlace, Placer使わなくても、Stableの環境でmacro使って実現出来そう
68デフォルトの名無しさん (ワッチョイ 97b3-28Ds)
2018/02/18(日) 10:49:08.55ID:/vdt0GUK0 boxって名前はBox<T>以外に使う場面で綺麗に見えない
place <- exprは代入みたい
place <- exprは代入みたい
69デフォルトの名無しさん (ブーイモ MMcf-jtfM)
2018/02/20(火) 18:44:44.84ID:QamN8HfjM tokio-coreなくなるんか
一通り組み上がった後の悲しいニュース
一通り組み上がった後の悲しいニュース
70デフォルトの名無しさん (ワッチョイ bfe4-Ql/f)
2018/02/20(火) 21:05:12.64ID:n66ylLug0 まじか、ちょっと辛いな
依存してるライブラリも結構あるよね
依存してるライブラリも結構あるよね
71デフォルトの名無しさん (ワッチョイ 9ff7-QEWT)
2018/02/21(水) 00:49:13.91ID:s9stOBAB0 ワッチョイなしの方アンチが暴れてる
72デフォルトの名無しさん (ワッチョイ ff98-e/1Q)
2018/02/21(水) 00:56:09.93ID:kjg0KAFU0 tokio系列のやつってtokioとかtokio-coreとかtokio-ioとかtokio-protoとか複数あってよく分からんのよね
tokio-ioのリポジトリにはtokioに移動したからもう使うなって書いてあるし
tokio-coreは移動じゃなくて廃止予定って書いてある…
tokio-protoはそのまま?tokio-timerとかtokio-serviceとかよく知らんリポジトリもあるし…
誰か各クレートの特徴(役割)と関係性を教えてくれ
tokio-ioのリポジトリにはtokioに移動したからもう使うなって書いてあるし
tokio-coreは移動じゃなくて廃止予定って書いてある…
tokio-protoはそのまま?tokio-timerとかtokio-serviceとかよく知らんリポジトリもあるし…
誰か各クレートの特徴(役割)と関係性を教えてくれ
73デフォルトの名無しさん (ドコグロ MMdf-vS7N)
2018/02/21(水) 19:02:38.89ID:ariB2x93M >>71
あっちは、アンチが立てたキチガイ専用スレだからいいんだよ
あっちは、アンチが立てたキチガイ専用スレだからいいんだよ
74デフォルトの名無しさん (ブーイモ MMcf-jtfM)
2018/02/21(水) 19:11:26.04ID:2b1o4F67M コミットを追うとtokio-coreはtokioに変わったように見える
tokio-core=tokioでtokioの本体
tokio-ioはtokio-coreを使って非同期ioを実装したものだったがしゃらくせえのでtokio-coreに取り込んだのかな
tokio-protoはtokio-coreを使ってネットワークプロトコルを実装したものだったがしゃらくせえからtokio-coreに取り込んだのかな
つまり tokio = tokio-core + tokio-io + tokio-proto
か?
tokio-core=tokioでtokioの本体
tokio-ioはtokio-coreを使って非同期ioを実装したものだったがしゃらくせえのでtokio-coreに取り込んだのかな
tokio-protoはtokio-coreを使ってネットワークプロトコルを実装したものだったがしゃらくせえからtokio-coreに取り込んだのかな
つまり tokio = tokio-core + tokio-io + tokio-proto
か?
75デフォルトの名無しさん (ワッチョイ 97b3-T3WU)
2018/02/21(水) 23:28:42.27ID:J5LO2Gvl0 [] [[[ [[ [] ][ [] [ ] [] ][]] [[[ [] }
76デフォルトの名無しさん (ワッチョイ fc23-Yogk)
2018/02/22(木) 13:48:53.41ID:H839Tp+80 tokio-protoとtokio-serviceってtrait宣言が主体のインターフェース定義クレートだったような?
前者はクライアント、後者はサーバに適したインターフェースが定義されてた覚えがある
io, timer, cpupoolなんかはユーティリティ機能が実装されてたよな
統合の基準はどこかで議論されたんだろうけど、どこでやってたのかな
前者はクライアント、後者はサーバに適したインターフェースが定義されてた覚えがある
io, timer, cpupoolなんかはユーティリティ機能が実装されてたよな
統合の基準はどこかで議論されたんだろうけど、どこでやってたのかな
2018/02/28(水) 17:58:52.09
【お知らせ】Packt出版より Network Programming with Rust が発売されました。
78デフォルトの名無しさん (ワッチョイ 67b3-C/rw)
2018/03/07(水) 19:47:20.60ID:LRCrToXv0 https://play.rust-lang.org/?gist=cb511b34bc3ffbb43b8589a24156337a&version=stable
let mut foo = Foo{ a:0, b:0, c:0 };
let aaa = ["5", "432", "3"].iter().flat_map(|i| i.parse::<u32>()).collect::<Vec<_>>();
foo.a = aaa[0];
foo.b = aaa[1];
foo.c = aaa[2];
Rustってこれ以外に書き方ありませんか?
tupleでやってみるとleft-hand of expression not validと出ました
let mut foo = Foo{ a:0, b:0, c:0 };
let aaa = ["5", "432", "3"].iter().flat_map(|i| i.parse::<u32>()).collect::<Vec<_>>();
foo.a = aaa[0];
foo.b = aaa[1];
foo.c = aaa[2];
Rustってこれ以外に書き方ありませんか?
tupleでやってみるとleft-hand of expression not validと出ました
79デフォルトの名無しさん (ドコグロ MM9b-sUza)
2018/03/07(水) 20:33:15.97ID:sBnyF32KM だめなコードはらないと何がしたいか分かりません
80デフォルトの名無しさん (ワッチョイ df9f-UDKA)
2018/03/07(水) 20:41:08.80ID:jzt3Aumo0 だよなw 何をしたいのか分からんよなw
81デフォルトの名無しさん (ワッチョイ 67b3-y/90)
2018/03/07(水) 21:26:04.44ID:LRCrToXv082デフォルトの名無しさん (ワッチョイ df9f-UDKA)
2018/03/07(水) 21:29:17.37ID:jzt3Aumo0 一行にしたいなら
foo = Foo { a: aaa[0], b: aaa[1], c: aaa[2] };
でも良いだろ。
部分書換なら
foo = Foo { a: aaa[0], .. foo };
とかもある。
foo = Foo { a: aaa[0], b: aaa[1], c: aaa[2] };
でも良いだろ。
部分書換なら
foo = Foo { a: aaa[0], .. foo };
とかもある。
83デフォルトの名無しさん (ワッチョイ 7e95-gb/e)
2018/03/08(木) 01:34:04.75ID:4NfI3sqt0 1.24.1は何のリリース?
84デフォルトの名無しさん (ワッチョイ beeb-YOOT)
2018/03/11(日) 12:10:25.91ID:eSLd4gfv0 朗報: ついにウェブプラットフォームでRustが速度性能トップを取る
https://www.techempower.com/benchmarks/#section=data-r15&hw=ph&test=plaintext
なお、JSON操作を伴うとJavaにも劣る模様
ツリー制御が不得意すぎて笑うわ
https://www.techempower.com/benchmarks/#section=data-r15&hw=ph&test=plaintext
なお、JSON操作を伴うとJavaにも劣る模様
ツリー制御が不得意すぎて笑うわ
85デフォルトの名無しさん (ワッチョイ 23b3-I9YF)
2018/03/11(日) 13:43:13.82ID:Q5vGc4iJ0 JSON serializationはそんなに悪くないんじゃね?tokio-minihttpで96.2%出てる。
それよりSingle QueryとMultple Queryが遅いのが問題じゃね?
それよりSingle QueryとMultple Queryが遅いのが問題じゃね?
86デフォルトの名無しさん (ワッチョイ 2f97-6XBc)
2018/03/11(日) 17:59:47.19ID:9uw0Jco60 serdeでシリアライズだけするぶんにはjavaの1.4倍くらい早かったんだけどなあ(俺調べ)
87デフォルトの名無しさん (ワッチョイ 1f0e-kj1m)
2018/03/17(土) 21:44:59.24ID:zUTKt+H50 Rust book first editionからの変更知りたいんだけどバージョン差分どこでまとめられてる?
88デフォルトの名無しさん (ワッチョイ 1f0e-kj1m)
2018/03/17(土) 21:47:17.89ID:zUTKt+H5089デフォルトの名無しさん (ブーイモ MM5b-FuQQ)
2018/03/18(日) 07:04:56.79ID:esGNO3D8M 1.24.1てなんなんだろ
90デフォルトの名無しさん (ワッチョイ 1bd2-SmQe)
2018/03/18(日) 20:50:19.82ID:M8FazHkP0 >>83>>89
なんで自分で調べようともしないの?
Rust Languageさんのツイート: "Announcing Rust 1.24.1: we had some regressions in 1.24.0, so we've released a patch release. Please check it out! https://t.co/zrItc0qiqD"
https://twitter.com/rustlang/status/969367994072739841 👀
Rock54: Caution(BBR-MD5:b73a9cd27f0065c395082e3925dacf01)
なんで自分で調べようともしないの?
Rust Languageさんのツイート: "Announcing Rust 1.24.1: we had some regressions in 1.24.0, so we've released a patch release. Please check it out! https://t.co/zrItc0qiqD"
https://twitter.com/rustlang/status/969367994072739841 👀
Rock54: Caution(BBR-MD5:b73a9cd27f0065c395082e3925dacf01)
91デフォルトの名無しさん (ワッチョイ 2bb3-ogOK)
2018/03/18(日) 21:36:06.49ID:kfSBwJmk0 Iterator::mapに渡すクロージャ内で、クロージャ内の変数への参照を持つstructを返したい時ってどう対処するのが正解ですか?
https://play.rust-lang.org/?gist=a15e0dfa10339570fef5b9225761a9f0&version=stable
https://play.rust-lang.org/?gist=a15e0dfa10339570fef5b9225761a9f0&version=stable
92デフォルトの名無しさん (ワッチョイ bdb3-kj1m)
2018/03/18(日) 23:09:22.36ID:UNqGf23T0 does not live longエラー関係は自分が思ってるより広い視点で見た方が解決するんじゃないかなあ
Hito.konomi_no_mochiは参照なんだから、参照元としてVec<Mochi<'a>>を保持しないと駄目なんじゃね?
=>mochiがMapになってて分かりにくい
=>とりあえずcollectさせてVec<Mochi>持ったら動いた
みたいな。
https://play.rust-lang.org/?gist=6c9947e3584f1feb5bb14f07d27aa9c7&version=stable
多分、頭の良い人ならもっと綺麗な説明と解法があるんだろうけど
Hito.konomi_no_mochiは参照なんだから、参照元としてVec<Mochi<'a>>を保持しないと駄目なんじゃね?
=>mochiがMapになってて分かりにくい
=>とりあえずcollectさせてVec<Mochi>持ったら動いた
みたいな。
https://play.rust-lang.org/?gist=6c9947e3584f1feb5bb14f07d27aa9c7&version=stable
多分、頭の良い人ならもっと綺麗な説明と解法があるんだろうけど
93デフォルトの名無しさん (ワッチョイ 2bb3-yeMC)
2018/03/19(月) 07:39:54.89ID:bmK7HIBH0 >>92
ありがとうございます
仮引数mのライフタイムはmain関数が抜けるまでだから通るということで合っていますか
またVecではなくIterator::Mapだと駄目な理由は、Iterator::Mapはcollectされるまでクロージャが実行されないから…とかでしょうか
ありがとうございます
仮引数mのライフタイムはmain関数が抜けるまでだから通るということで合っていますか
またVecではなくIterator::Mapだと駄目な理由は、Iterator::Mapはcollectされるまでクロージャが実行されないから…とかでしょうか
94デフォルトの名無しさん (ワッチョイ bdb3-kj1m)
2018/03/19(月) 13:44:00.51ID:aUxUFBJe0 >>93
仮引数mのライフタイムはクロージャ内なのは変わらないよ。>>92は仮引数を参照じゃなく消費してるから通る(>>92の&mじゃなくてmで良い)
クロージャが実行されないから、ではなく、mochiの値が消費されてるのにその参照を持たせようとしてるから駄目
試しに>>91のコードでmochi.map(|m| { 0 })とか書いて、mochiをprintln!に渡してみようとすると怒られるよ。もう使ってるって。
そこらへんの細かいルールを覚えるの大変だし、コンパイラもまだ分かりやすいエラーメッセージ吐いてくれないから、
・参照を使うときは、参照元をちゃんと生かしておくこと
・参照を使った構造体は、元の値を修飾(見方を変える、新しい機能を持たせる等)するようなパターンに限定すること
を守るようにした方がいいよ
仮引数mのライフタイムはクロージャ内なのは変わらないよ。>>92は仮引数を参照じゃなく消費してるから通る(>>92の&mじゃなくてmで良い)
クロージャが実行されないから、ではなく、mochiの値が消費されてるのにその参照を持たせようとしてるから駄目
試しに>>91のコードでmochi.map(|m| { 0 })とか書いて、mochiをprintln!に渡してみようとすると怒られるよ。もう使ってるって。
そこらへんの細かいルールを覚えるの大変だし、コンパイラもまだ分かりやすいエラーメッセージ吐いてくれないから、
・参照を使うときは、参照元をちゃんと生かしておくこと
・参照を使った構造体は、元の値を修飾(見方を変える、新しい機能を持たせる等)するようなパターンに限定すること
を守るようにした方がいいよ
95デフォルトの名無しさん (ワッチョイ 2bb3-yeMC)
2018/03/19(月) 21:04:17.46ID:bmK7HIBH0 >>94
「消費したものの参照を持たせるのは駄目」と「消費しているから通る」はそれぞれはわかる気がするのですが、両方となると…
前者の「消費したもの」と後者(main関数中生き続けるMochiのベクトル)は別物だと思うのですが、
前者で駄目な理由は関数中生き続けるMochiがない(mapを呼び出しただけでは駄目)ということですか?
「消費したものの参照を持たせるのは駄目」と「消費しているから通る」はそれぞれはわかる気がするのですが、両方となると…
前者の「消費したもの」と後者(main関数中生き続けるMochiのベクトル)は別物だと思うのですが、
前者で駄目な理由は関数中生き続けるMochiがない(mapを呼び出しただけでは駄目)ということですか?
96デフォルトの名無しさん (ワッチョイ bdb3-kj1m)
2018/03/19(月) 23:26:36.74ID:aUxUFBJe0 「消費されるので通る」じゃ言葉足らずでした。「参照じゃなくmoveして延命している」の方が通じるかも
>>91のコードを整理すると
1. HitoはMochiの参照を持ってるから、Hitoが有効なスコープ中はMochiも有効じゃないといけない
2. mochiはinto_iterで作られてるからMochi型を吐き出す、けど所有はしない
3. なのにmochizukiはmochi.map()で各要素への参照しか持たない
4. mochiから吐き出されたMochiの受け皿が無いんでエラーになる
これを解決するには
1を変えてHitoがMochiを所有するようにデータ構造を変える
2で作られたMochi型の値をしっかり保持する変数を用意する
の2種類くらいしか思いつかん。
Does Not Live Longエラーはライフタイムがどうのこうのと小手先で弄るより、
値の所有者を明快にしたり、データ構造を見直してみると案外素直に直せるのが経験則。
>>91のコードを整理すると
1. HitoはMochiの参照を持ってるから、Hitoが有効なスコープ中はMochiも有効じゃないといけない
2. mochiはinto_iterで作られてるからMochi型を吐き出す、けど所有はしない
3. なのにmochizukiはmochi.map()で各要素への参照しか持たない
4. mochiから吐き出されたMochiの受け皿が無いんでエラーになる
これを解決するには
1を変えてHitoがMochiを所有するようにデータ構造を変える
2で作られたMochi型の値をしっかり保持する変数を用意する
の2種類くらいしか思いつかん。
Does Not Live Longエラーはライフタイムがどうのこうのと小手先で弄るより、
値の所有者を明快にしたり、データ構造を見直してみると案外素直に直せるのが経験則。
97デフォルトの名無しさん (ワッチョイ abb6-ogOK)
2018/03/20(火) 13:21:28.84ID:RDB2KieC0 >>96
loop{
let (a, cond): (&str, bool) = get_too_many_str();
let m = Mochi{aji: a};
let h = Hito {m : &m};
if(cond){ break; }
}
// ここでhのvecが欲しい
この場合は、ムーブする(ループより長いライフライムの)変数がないので1の手法しかないということになりますか?
そこそこでかい文字列を扱っているので気を使っていたのですが、この場合Stringにすべきでしょうか
loop{
let (a, cond): (&str, bool) = get_too_many_str();
let m = Mochi{aji: a};
let h = Hito {m : &m};
if(cond){ break; }
}
// ここでhのvecが欲しい
この場合は、ムーブする(ループより長いライフライムの)変数がないので1の手法しかないということになりますか?
そこそこでかい文字列を扱っているので気を使っていたのですが、この場合Stringにすべきでしょうか
98デフォルトの名無しさん (ワッチョイ bdb3-kj1m)
2018/03/20(火) 14:30:32.82ID:UUyTwokV0 大きい文字列を扱うから参照にしたいってのは普通にあるし分かるけど
Hitoが&MochiでなくMochiをメンバに持つようになっても文字列のコピーは行われないよ
自分なら>>97のget_too_many_str()が返す&strの元を誰が保持するのかをまず気にする
そこをしっかり把握してれば文字列のコピーは最低限になるはずだから
Hitoが&MochiでなくMochiをメンバに持つようになっても文字列のコピーは行われないよ
自分なら>>97のget_too_many_str()が返す&strの元を誰が保持するのかをまず気にする
そこをしっかり把握してれば文字列のコピーは最低限になるはずだから
99デフォルトの名無しさん (ワッチョイ eb2d-4xVl)
2018/03/20(火) 16:38:27.06ID:P+YmZBwi0100デフォルトの名無しさん (ワッチョイ 2bb3-yeMC)
2018/03/21(水) 11:43:51.64ID:cBTkQiaM0 &strの元もloop内の変数が持っています
hのvecを作るにはコピーは避けられないようですね…
&strからStringに変えたところhvec.push(h)してもエラーにはなりませんでしたが、
スコープを抜けたはずの変数が使える理由ってどこかに書いていますか?
hのvecを作るにはコピーは避けられないようですね…
&strからStringに変えたところhvec.push(h)してもエラーにはなりませんでしたが、
スコープを抜けたはずの変数が使える理由ってどこかに書いていますか?
101デフォルトの名無しさん (ワッチョイ bdb3-kj1m)
2018/03/21(水) 14:53:30.44ID:9rI6JIRt0 そりゃloop内の変数hから、loop外のhvecに所有権が移動したから
頭の中に入れておける物なんて極わずかだし、場当たり的にdoes not live longエラーに対処するのは大変なので、
・値の所有者はどの変数であるべきか
・データ構造はどうあるべきか
という観点だけ念頭にいれて、「性能を稼ぐために参照を使おう」って考えを一旦外すとスッキリするよ
頭の中に入れておける物なんて極わずかだし、場当たり的にdoes not live longエラーに対処するのは大変なので、
・値の所有者はどの変数であるべきか
・データ構造はどうあるべきか
という観点だけ念頭にいれて、「性能を稼ぐために参照を使おう」って考えを一旦外すとスッキリするよ
102デフォルトの名無しさん (ワッチョイ ff9f-e5q7)
2018/04/15(日) 17:27:59.27ID:YDqAu+LL0 こっちが本スレと聞いて
103デフォルトの名無しさん (ワッチョイ cfe8-2eiy)
2018/04/15(日) 21:42:18.86ID:eccSQZbu0 しかしここには俺はいない
104デフォルトの名無しさん (ワッチョイ cfe8-2eiy)
2018/04/15(日) 21:42:37.31ID:eccSQZbu0 まちがえた
俺しかいない
俺しかいない
105デフォルトの名無しさん (ワッチョイ ffd2-EWy0)
2018/04/15(日) 22:10:33.68ID:33fSNzq50 俺もいるぞ
106デフォルトの名無しさん (アウアウエー Sadf-Mqc2)
2018/04/15(日) 22:44:53.22ID:UX4y5Mn1a てst
107デフォルトの名無しさん (ワッチョイ cfe8-2eiy)
2018/04/16(月) 07:13:50.32ID:pzKlDNeX0 まともな話題はslackいっちゃうのかな。
匿名で喋りたいのはアンチ向きか
匿名で喋りたいのはアンチ向きか
108デフォルトの名無しさん (ワッチョイ a364-0hQO)
2018/05/08(火) 02:44:07.65ID:kruQSPFC0 別にアンチって訳じゃないけど、コンパイルが遅すぎる(特に最適化掛けた場合に)のはどうかと思う。
実行が速くてもその生成に時間が掛かれば無意味でしょう……。
実行が速くてもその生成に時間が掛かれば無意味でしょう……。
109デフォルトの名無しさん (ワッチョイ 8a2d-pRx+)
2018/05/08(火) 05:31:20.68ID:4Vs0GKvV0 >>108
Rustで組んだ新Firefoxの動作が2倍ほど速くなったのは無意味?
Rustで組んだ新Firefoxの動作が2倍ほど速くなったのは無意味?
110デフォルトの名無しさん (ワッチョイ 1f97-q47z)
2018/05/08(火) 07:00:09.03ID:EnN/pyur0 逆なら理解できるけど
111デフォルトの名無しさん (ドコグロ MM2b-4ryL)
2018/05/08(火) 08:36:06.07ID:Hy6hpXT/M まあコンパイルは遅いわな。
ていうかcargoの仕組みが問題なだけか?
ていうかcargoの仕組みが問題なだけか?
112デフォルトの名無しさん (ワッチョイ 0bb3-XZ5U)
2018/05/08(火) 20:14:50.84ID:T0pMALEX0 rustcで単一ファイルだけコンパイルすると結構速いなと思った
cargoって警告無視のオプション(-Awarning)の有無でも一からビルドしようとしたりちょくちょくお粗末
cargoって警告無視のオプション(-Awarning)の有無でも一からビルドしようとしたりちょくちょくお粗末
113デフォルトの名無しさん (ワッチョイ f564-n6Dg)
2018/05/10(木) 20:35:06.28ID:zLx1ZI770 なんかRustってテスト用と製品用で別々の最適化を施せるんじゃなかったっけ。
俺は自分の為だけにRustを使ってるのであまり気にしたことがないが。
俺は自分の為だけにRustを使ってるのであまり気にしたことがないが。
114デフォルトの名無しさん (ドコグロ MM43-CJWe)
2018/05/12(土) 12:11:46.40ID:OzyUIrxEM115デフォルトの名無しさん (JP 0Ha1-pXmg)
2018/05/23(水) 12:09:39.17ID:6kVmIohDH ほとんどc++に見えるの俺だけ?
116デフォルトの名無しさん (ワッチョイ 5523-/w+O)
2018/05/23(水) 12:29:18.87ID:4/oN1Bt60 みんな言ってる
レスを投稿する
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 ★2 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 高市早苗、約1ヶ月でドル円・10円円安を達成 [256556981]
- 【超絶朗報】高市早苗、月給5万円アップを突如確定させるWWWWW
- 【高市核兵器】 小泉コメ防衛大臣「民主党政権 岡田外務大臣の “非核三原則” に関する国会答弁を引き継いでいる」 政策堅持を明言 [485983549]
- するってぇと何かい?2週間前に安全を確認して輸入再開した海産物を食の安全のために輸入停止にしたってのかい?
- 【高市賃上げ】 自民党&維新の会「国会議員の給与を 月5万円アップさせる!」 今国会で歳費法改正。 月129万円→月134万円に [485983549]
- ㊗157円 [194819832]
