プログラミング言語 R ..
[2ch|▼Menu]
2:デフォルトの名無しさん
17/12/24 22:11:46.18 Ye7s35LEa.net
>>1

3:デフォルトの名無しさん
17/12/26 19:52:11.75 2mEdN5M00.net
皆知ってるかもしれないけど、URLリンク(github.com) は良いね
公式のbookには無かった「自分で書いてみた時にハマる箇所と解決法」が丁寧に書いてあるんで、
特にプログラミング経験者でRust初学者には自信を持ってお勧めできる

4:デフォルトの名無しさん
17/12/27 07:28:12.89 UvJKqKam0.net
>>3
しらんかた
webのやつはみれなくなってるね

5:デフォルトの名無しさん
17/12/27 10:23:26.96 TP7XdM/O0.net
製本?したものを上げてるサーバーが結構長いこと落ちてるね
1. cargo install mdbookでmdbookをインストール
2. git cloneで>>3のリポジトリを取ってくる
3. 取ってきたディレクトリでmdbookを実行
4. book/ にhtmlで製本されたものが出力される
ので、是非読んで欲しい。may not live longとかcannot moveとかで怒られまくってる人なら共感しながら読めるはず

6:デフォルトの名無しさん
18/01/09 09:45:01.64 9pH3pf0PM.net
アンチスレのほうが伸びてるやん
枯れ木も山の賑わい

7:デフォルトの名無しさん
18/01/09 11:34:47.34 mVHM72Ck0.net
>>3
URLリンク(cglab.ca)
読めるようになってるな。

8:デフォルトの名無しさん
18/01/12 20:30:43.24 r1exnGKH0.net
教えてください
VecのDisplay::fmtをカスタマイズしたくて
type MyType<T> = (Vec<T>);
impl std::fmt::Display for MyType {
}

9:デフォルトの名無しさん
18/01/12 20:43:39.15 r1exnGKH0.net
申し訳ありません 途中送信してしまいました
コードをplaygroundに移しました
URLリンク(play.rust-lang.org)
VecのDisplay::fmtをカスタマイズしたくて上の様にMyTypeを作成したのですが
Vecのメソッド委譲するためのコードを手書きする作業が煩雑になって困っています
何か上手い回避策は無いでしょうか?

10:デフォルトの名無しさん
18/01/12 21:23:37.23 B4BnwQ220.net
>>9
私も初心者で分からないですが最終的に何がしたいんでしょうか?

11:9
18/01/12 21:44:35.31 r1exnGKH0.net
>>10
レスどうもです
Vec(他標準 struct)のDisplay::fmt出力をカスタマイズしたいんです 例えば
・要素数が多い場合、最初の数個を出力して残りを省略するとか
・要素の出力が長くなる場合、適当なところで改行するとか
・インデントを受け付けてネストしてる場合は改行とインデントで整形するとか
その上でVecのインターフェースをそのまま使いたいんですが
>>9のように新規の構造体を作る場合 手書きで委譲せねばならず
どうにか上手く出来ないもんかな……と

12:デフォルトの名無しさん
18/01/12 22:44:10.61 B4BnwQ220.net
>>11
その用途ならVecに別な名前のメソッドを直接implしちゃってそっち呼び出せばいいような気がしたんですが
println!("{}", v.my_fmt());
みたいに

13:デフォルトの名無しさん
18/01/12 23:39:08.93 XT/5sCZ8x.net
>>9 URLリンク(play.rust-lang.org)
DerefとDerefMutを実装するといい。
↓にあるDeref Coarcionっていうコンパイラの機能で、x: MyType<T>に対し、&xが&MyType<T>とも&Vec<T>ともみなしてくれるようになる
URLリンク(doc.rust-lang.org)
更に追加でIntoとFromも簡単に実装できるから不自由は無くなるはず

14:9
18/01/12 23:49:12.53 r1exnGKH0.net
>>12
ごもっともです
self.0に委譲するマクロが上手く書けなかった経験があり
それに引きずられて本質を見失ってました
コードを整理していったらいけそうな感じになりました
URLリンク(play.rust-lang.org)
ありがとうございます
>>13
ああ、なるほど
Derefは思い至ってませんでした メソッド委譲の解決になりそうで助かります
こちらもありがとうございます

15:デフォルトの名無しさん
18/01/13 07:02:43.11 PvY+igkm0.net
なるほど

16:デフォルトの名無しさん
18/01/13 10:23:49.57 PvY+igkm0.net
URLリンク(stackoverflow.com)
ぐぐったらこんな議論も。

17:デフォルトの名無しさん
18/01/13 19:09:49.17 zJNsIIn8x.net
>>16の論旨は「MyType<T>は常にVec<T>として扱われても問題ないか?あるならDerefはおすすめしない」だと思うけど、
今回の場合はむしろMyType<T>は特別なことが無い限りVec<T>として使いたいんじゃないの?

18:9
18/01/13 20:15:02.44 5hbvxbkG0.net
>>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が有用ということが
知見として学べたので 大変ありがたかったです

19:デフォルトの名無しさん
18/01/14 07:18:07.14 oPMCDJ2h0.net
>>17
このスレを読んでる人に情報共有してるだけだよ

20:デフォルトの名無しさん
18/01/14 15:21:10.36 oPMCDJ2h0.net
元スレやばいね

21:デフォルトの名無しさん
18/01/18 23:48:10.50 HIA6V+PM0.net
オライリー届いた。
分厚すぎてわろたわ。読むの大変そう。

22:デフォルトの名無しさん
18/01/29 13:41:23.22 P6u1lvxj0.net
dyn Traitが入ってしばらくしたらBox<Trait>はdisconになるの?

23:デフォルトの名無しさん
18/01/29 14:45:47.97 gyvOdhISa.net
deprecated扱いになって警告を出し次のepochで削除とかだったと思う

24:デフォルトの名無しさん
18/01/29 17:30:10.02 P6u1lvxj0.net
impl Trait入ったらそもそもほとんど使わなくなるから気にしなくていいのか。

25:デフォルトの名無しさん
18/01/29 17:48:02.51 gyvOdhISa.net
使うケース減るのもそうだけどepochで機能削除する場合はソースコードの変換ツールが提供されるらしい
あと古いepochのソースはそのままコンパイルできるらしいから特に対応不要らしい
だから新しいepochにしか入っていない機能を使いたいcrateとかでなければ何もしなくても困らないはずだし
その場合でも変換ツール通せば簡単に対応できるはず

26:デフォルトの名無しさん
18/01/29 21:18:10.28 ltX/HOsy0.net
なるほど

27:デフォルトの名無しさん
18/01/31 12:10:20.24 /dPh0x6ka.net
2018年のロードマップのRFC出てる
URLリンク(github.com)
impl Traitついに安定化されるのか

28:デフォルトの名無しさん
18/01/31 19:12:32.86 hEoUgsMbM.net
epoch releaseってのはどういうことなんだってばよ?

29:デフォルトの名無しさん
18/02/04 00:05:25.67 VmMujkXk0.net
map: BTreeMap<K,V>で、keyが無かったら挿入、あったら格納されてる値vに応じて新しい値new_vに更新するか決めるってやりたいんだけど、
let v = map.entry(key).or_insert(new_v);
if ... {
*v = new_v;
}
よりもっと綺麗な書き方ある?

30:デフォルトの名無しさん
18/02/04 01:05:26.32 qOX3lZ+s0.net
and_modify() ?

31:デフォルトの名無しさん
18/02/06 16:05:20.14 95WYpRcW0.net
URLリンク(webassembly.studio)
CやRustでWebAssemblyできるOnlineIDEだそうな

32:デフォルトの名無しさん
18/02/07 00:06:02.34 z0wRGtUY0.net
Rust Never Sleeps: Community Grows, Eclipse-Based IDE Planned
URLリンク(adtmag.com)

33:デフォルトの名無しさん
18/02/07 10:02:06.97 tqZIcWxZM.net
>>31
ええやん

34:デフォルトの名無しさん
18/02/07 10:05:39.88 tqZIcWxZM.net
>>32
eclipseはいらんなあ

35:デフォルトの名無しさん
18/02/07 21:39:04.86 HRWlDALX0.net
オライリー本読んだ?

36:デフォルトの名無しさん
18/02/10 17:28:13.69 EA1ZzrT70.net
wasmってまだプリミティブすぎて使い物にならないのかと思ってたけど wasm-bindgen すげえな
もうここまでできるのか

37:デフォルトの名無しさん
18/02/10 18:48:11.24 YRtNT72/0.net
Rustすごい!
takahito takabayashiさんのツイート: "ファミコンのエミュレータをRust / WebAssembly で書き直した
URLリンク(twitter.com)

38:デフォルトの名無しさん
18/02/12 12:24:11.46 4ugd2bUvF.net
梅手伝い

39:デフォルトの名無しさん
18/02/12 19:13:38.83 g6Vhygc80.net
苦労して書き直しても全然パフォーマンス上がらないのな…
ぐうの音もでないほど効果があるユースケースってなんなんだ

40:デフォルトの名無しさん
18/02/12 21:38:29.65 tHO1NU6P0.net
アルゴリズムが変わらないならそう変わらんのじゃないか
他人のひどいコードならともかく、同じ人が小規模なプログラムを書き直す程度だと特に
C/C++からRustへ書き直して速度が上がったって話はあんま聞いたことが無い
速いネイティブライブラリを言語に組み込んでるJuliaとかなら、書き直すだけで速度上がったって話はちらほら
pythonだったらnumpy使った方が楽でいいとかも

41:デフォルトの名無しさん
18/02/12 22:31:51.98 g6Vhygc80.net
いやだってjavascriptだぜ?アルゴリズムの問題か?

42:デフォルトの名無しさん
18/02/13 11:38:21.89 L9OfLhwQ0.net
リリースビルドしてないとか

43:デフォルトの名無しさん
18/02/13 13:55:22.76 U6RMU7ria.net
結局本スレどこ?

44:デフォルトの名無しさん
18/02/13 14:01:02.73 L9OfLhwQ0.net
ここ

45:デフォルトの名無しさん
18/02/14 10:32:44.85 Sny1AUMZ0.net
c++もそうだがコンパイラに機能を詰め込むってのがそもそも筋が悪い

46:デフォルトの名無しさん
18/02/14 16:35:43.73 wToAct7f0.net
>>45
どういうこと?じゃあどうすればいいの?

47:デフォルトの名無しさん
18/02/14 18:27:22.03 KakS2s960.net
asm!だよ

48:デフォルトの名無しさん
18/02/14 19:14:50.70 Sny1AUMZ0.net
>>46
ライブラリ、もしくはツールに任せる。

49:デフォルトの名無しさん
18/02/15 02:06:38.25 mcN0VL7z0.net
>>48
やっぱりちょっと分からないな。
RustやC++のどの辺がコンパイラに機能を詰め込んでると思うの?
ライブラリorツールに任せるってのもどの辺を任せたいのかな?
話がザックリし過ぎて言いたいことがよく分からないんだが。

50:デフォルトの名無しさん
18/02/15 14:13:53.00 exgu/6oKM.net
プリプロセッサマクロのことかな?あとは型システムとかGCのことかな?ライブラリに任せるの意味がよくわからんが…

51:デフォルトの名無しさん
18/02/15 17:01:00.96 OS8rqPvzd.net
C++はコンパイラの方もだけど標準ライブラリでの機能実現も相応に多くて結果ソースの記述が煩雑になっているのは既知の事実でしょう
ライブラリや実装に任せた結果APIの統一が取れなくなって結局細かな仕様策定を余儀なくされたSchemeを見ても銀の弾丸でない事は明らかだよね
それに出来る事を増やすという点においてライブラリは有用だけど変数の不変性や型システムのような制限をする事に関してはコンパイラによしなにしてもらうより他ないよ

52:デフォルトの名無しさん
18/02/16 01:22:14.41 W1XJdyx10.net
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆

53:デフォルトの名無しさん
18/02/16 07:39:34.93 455TYoTb0.net
やっとstableでrustfmtできるようになったな

54:デフォルトの名無しさん
18/02/16 11:54:10.92 sOKjApWVa.net
どうせ明日にはまたnightly限定になってるよ

55:デフォルトの名無しさん
18/02/16 14:44:20.68 o2oszjec0.net
最近のアップデートつまんねえなあ

56:デフォルトの名無しさん
18/02/16 15:41:33.96 xYOe+Cvi0.net
>>45は言語仕様の追加、更新が気に入らないんじゃないかな
try!の代わりに?なんて以ての外だ、みたいな?それ以外に思い付かなかったけど
1.0以前に@や~を削除してライブラリにぶん投げた辺りは希望通りな気がする
基本的に電池入りじゃないRustはライブラリやマクロの代わりの言語仕様の追加じゃなく
より効率的なバイナリを吐くための言語仕様の追加が多いイメージだけどなぁ、impl Traitとか

57:デフォルトの名無しさん
18/02/16 17:59:54.40 ItA0QsEV0.net
>>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にする必要あったのか?ってところで賛否両論あるかもね。

58:デフォルトの名無しさん
18/02/16 19:47:30.32 o2oszjec0.net
box キーワードは何時 stable になるんだ?

59:デフォルトの名無しさん
18/02/17 11:13:34.80 J1S1NncJ0.net
boxキーワードはどういう時にうれしいのかがわからん

60:デフォルトの名無しさん
18/02/17 11:16:00.80 kwPbHgTn0.net
明らかに二行に分けた方が読みやすいわけだが。
新しい機能マンセー厨ってそういう感覚の狂いについて無自覚過ぎんだよね。

61:デフォルトの名無しさん
18/02/17 13:27:59.06 Nh87YVhF0.net
俺も違和感はあるけど、多くの人が賛意を出して採用されたんだから
>>60や俺の感覚が狂ってるんじゃね?自身の感覚の狂いって当然ながら無自覚過ぎんよ
boxは在り様の総意を取るの面倒だし、目下はBoxで運用できてるしで、いつまでもstableに来なさそう
ヒープを多用したい人には文法にあればありがたいんだろうけど、そもそもヒープが好まれんしのう

62:デフォルトの名無しさん
18/02/17 14:16:54.60 +W6LcK0d0.net
boxっていきなりヒープにメモリ確保されるのが保証されたりするんじゃないの?
今はコンパイラ次第じゃん

63:デフォルトの名無しさん
18/02/17 14:41:36.65 IpKTSZVJ0.net
ironって今メンテされてないのか
最近のweb FWはrocketの方が人気なんかな
nightly専用だからまだ手を付けてないんだけど

64:デフォルトの名無しさん
18/02/17 20:32:28.58 QFQHB0DO0.net
>>59
URLリンク(rust-lang-ja.github.io)
> このように書くことでパフォーマンスを犠牲にすることなく、柔軟性を確保することができます。
知らないの?

65:デフォルトの名無しさん
18/02/17 23:42:00.44 9NiO1PZdF.net
それはInPlaceとかPlacerがあればよくてbox inはただのsyntax sugarでは

66:デフォルトの名無しさん
18/02/18 08:04:09.95 SMMCMA600.net
分解のほうは新しいの?

67:デフォルトの名無しさん
18/02/18 08:27:52.42 5lvSpjte0.net
分解の方がよほどsyntax sugarじゃないのかいな
NightlyのInPlace, Placer使わなくても、Stableの環境でmacro使って実現出来そう

68:デフォルトの名無しさん
18/02/18 10:49:08.55 /vdt0GUK0.net
boxって名前はBox<T>以外に使う場面で綺麗に見えない
place <- exprは代入みたい

69:デフォルトの名無しさん
18/02/20 18:44:44.84 QamN8HfjM.net
tokio-coreなくなるんか
一通り組み上がった後の悲しいニュース

70:デフォルトの名無しさん
18/02/20 21:05:12.64 n66ylLug0.net
まじか、ちょっと辛いな
依存してるライブラリも結構あるよね

71:デフォルトの名無しさん
18/02/21 00:49:13.91 s9stOBAB0.net
ワッチョイなしの方アンチが暴れてる

72:デフォルトの名無しさん
18/02/21 00:56:09.93 kjg0KAFU0.net
tokio系列のやつってtokioとかtokio-coreとかtokio-ioとかtokio-protoとか複数あってよく分からんのよね
tokio-ioのリポジトリにはtokioに移動したからもう使うなって書いてあるし
tokio-coreは移動じゃなくて廃止予定って書いてある…
tokio-protoはそのまま?tokio-timerとかtokio-serviceとかよく知らんリポジトリもあるし…
誰か各クレートの特徴(役割)と関係性を教えてくれ

73:デフォルトの名無しさん
18/02/21 19:02:38.89 ariB2x93M.net
>>71
あっちは、アンチが立てたキチガイ専用スレだからいいんだよ

74:デフォルトの名無しさん
18/02/21 19:11:26.04 2b1o4F67M.net
コミットを追うと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
か?

75:デフォルトの名無しさん
18/02/21 23:28:42.27 J5LO2Gvl0.net
[] [[[ [[ [] ][ [] [ ] [] ][]] [[[ [] }

76:デフォルトの名無しさん
18/02/22 13:48:53.41 H839Tp+80.net
tokio-protoとtokio-serviceってtrait宣言が主体のインターフェース定義クレートだったような?
前者はクライアント、後者はサーバに適したインターフェースが定義されてた覚えがある
io, timer, cpupoolなんかはユーティリティ機能が実装されてたよな
統合の基準はどこかで議論されたんだろうけど、どこでやってたのかな

77:デフォルトの名無しさん
18/02/28 17:58:52.09 .net
【お知らせ】Packt出版より Network Programming with Rust が発売されました。

78:デフォルトの名無しさん
18/03/07 19:47:20.60 LRCrToXv0.net
URLリンク(play.rust-lang.org)
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:デフォルトの名無しさん
18/03/07 20:33:15.97 sBnyF32KM.net
だめなコードはらないと何がしたいか分かりません

80:デフォルトの名無しさん
18/03/07 20:41:08.80 jzt3Aumo0.net
だよなw 何をしたいのか分からんよなw

81:デフォルトの名無しさん
18/03/07 21:26:04.44 LRCrToXv0.net
>>79
大量のフィールドに値を入れるのって
一行一行書くしかありませんか?

82:デフォルトの名無しさん
18/03/07 21:29:17.37 jzt3Aumo0.net
一行にしたいなら
foo = Foo { a: aaa[0], b: aaa[1], c: aaa[2] };
でも良いだろ。
部分書換なら
foo = Foo { a: aaa[0], .. foo };
とかもある。

83:デフォルトの名無しさん
18/03/08 01:34:04.75 4NfI3sqt0.net
1.24.1は何のリリース?

84:デフォルトの名無しさん
18/03/11 12:10:25.91 eSLd4gfv0.net
朗報: ついにウェブプラットフォームでRustが速度性能トップを取る
URLリンク(www.techempower.com)
なお、JSON操作を伴うとJavaにも劣る模様
ツリー制御が不得意すぎて笑うわ

85:デフォルトの名無しさん
18/03/11 13:43:13.82 Q5vGc4iJ0.net
JSON serializationはそんなに悪くないんじゃね?tokio-minihttpで96.2%出てる。
それよりSingle QueryとMultple Queryが遅いのが問題じゃね?

86:デフォルトの名無しさん
18/03/11 17:59:47.19 9uw0Jco60.net
serdeでシリアライズだけするぶんにはjavaの1.4倍くらい早かったんだけどなあ(俺調べ)

87:デフォルトの名無しさん
18/03/17 21:44:59.24 zUTKt+H50.net
Rust book first editionからの変更知りたいんだけどバージョン差分どこでまとめられてる?

88:デフォルトの名無しさん
18/03/17 21:47:17.89 zUTKt+H50.net
URLリンク(github.com)
ここか

89:デフォルトの名無しさん
18/03/18 07:04:56.79 esGNO3D8M.net
1.24.1てなんなんだろ

90:デフォルトの名無しさん
18/03/18 20:50:19.82 M8FazHkP0.net
>>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! URLリンク(t.co)
URLリンク(twitter.com) 👀
Rock54: Caution(BBR-MD5:b73a9cd27f0065c395082e3925dacf01)


91:デフォルトの名無しさん
18/03/18 21:36:06.49 kfSBwJmk0.net
Iterator::mapに渡すクロージャ内で、クロージャ内の変数への参照を持つstructを返したい時ってどう対処するのが正解ですか?
URLリンク(play.rust-lang.org)

92:デフォルトの名無しさん
18/03/18 23:09:22.36 UNqGf23T0.net
does not live longエラー関係は自分が思ってるより広い視点で見た方が解決するんじゃないかなあ
Hito.konomi_no_mochiは参照なんだから、参照元としてVec<Mochi<'a>>を保持しないと駄目なんじゃね?
=>mochiがMapになってて分かりにくい
=>とりあえずcollectさせてVec<Mochi>持ったら動いた
みたいな。
URLリンク(play.rust-lang.org)
多分、頭の良い人ならもっと綺麗な説明と解法があるんだろうけど

93:デフォルトの名無しさん
18/03/19 07:39:54.89 bmK7HIBH0.net
>>92
ありがとうございます
仮引数mのライフタイムはmain関数が抜けるまでだから通るということで合っていますか
またVecではなくIterator::Mapだと駄目な理由は、Iterator::Mapはcollectされるまでクロージャが実行されないから…とかでしょうか

94:デフォルトの名無しさん
18/03/19 13:44:00.51 aUxUFBJe0.net
>>93
仮引数mのライフタイムはクロージャ内なのは変わらないよ。>>92は仮引数を参照じゃなく消費してるから通る(>>92の&mじゃなくてmで良い)
クロージャが実行されないから、ではなく、mochiの値が消費されてるのにその参照を持たせようとしてるから駄目
試しに>>91のコードでmochi.map(|m| { 0 })とか書いて、mochiをprintln!に渡してみようとすると怒られるよ。もう使ってるって。
そこらへんの細かいルールを覚えるの大変だし、コンパイラもまだ分かりやすいエラーメッセージ吐いてくれないから、
・参照を使うときは、参照元をちゃんと生かしておくこと
・参照を使った構造体は、元の値を修飾(見方を変える、新しい機能を持たせる等)するようなパターンに限定すること
を守るようにした方がいいよ

95:デフォルトの名無しさん
18/03/19 21:04:17.46 bmK7HIBH0.net
>>94
「消費したものの参照を持たせるのは駄目」と「消費しているから通る」はそれぞれはわかる気がするのですが、両方となると…
前者の「消費したもの」と後者(main関数中生き続けるMochiのベクトル)は別物だと思うのですが、
前者で駄目な理由は関数中生き続けるMochiがない(mapを呼び出しただけでは駄目)ということですか?

96:デフォルトの名無しさん
18/03/19 23:26:36.74 aUxUFBJe0.net
「消費されるので通る」じゃ言葉足らずでした。「参照じゃなく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エラーはライフタイムがどうのこうのと小手先で弄るより、
値の所有者を明快にしたり、データ構造を見直してみると案外素直に直せるのが経験則。

97:デフォルトの名無しさん
18/03/20 13:21:28.84 RDB2KieC0.net
>>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にすべきでしょうか

98:デフォルトの名無しさん
18/03/20 14:30:32.82 UUyTwokV0.net
大きい文字列を扱うから参照にしたいってのは普通にあるし分かるけど
Hitoが&MochiでなくMochiをメンバに持つようになっても文字列のコピーは行われないよ
自分なら>>97のget_too_many_str()が返す&strの元を誰が保持するのかをまず気にする
そこをしっかり把握してれば文字列のコピーは最低限になるはずだから

99:デフォルトの名無しさん
18/03/20 16:38:27.06 P+YmZBwi0.net
>>97
んー、自分なら そこだけに使うMochiCow型作ってでも
ajiの型をCowにして凌ぐかな

100:デフォルトの名無しさん
18/03/21 11:43:51.64 cBTkQiaM0.net
&strの元もloop内の変数が持っています
hのvecを作るにはコピーは避けられないようですね…
&strからStringに変えたところhvec.push(h)してもエラーにはなりませんでしたが、
スコープを抜けたはずの変数が使える理由ってどこかに書いていますか?

101:デフォルトの名無しさん
18/03/21 14:53:30.44 9rI6JIRt0.net
そりゃloop内の変数hから、loop外のhvecに所有権が移動したから
頭の中に入れておける物なんて極わずかだし、場当たり的にdoes not live longエラーに対処するのは大変なので、
・値の所有者はどの変数であるべきか
・データ構造はどうあるべきか
という観点だけ念頭にいれて、「性能を稼ぐために参照を使おう」って考えを一旦外すとスッキリするよ

102:デフォルトの名無しさん
18/04/15 17:27:59.27 YDqAu+LL0.net
こっちが本スレと聞いて

103:デフォルトの名無しさん
18/04/15 21:42:18.86 eccSQZbu0.net
しかしここには俺はいない

104:デフォルトの名無しさん
18/04/15 21:42:37.31 eccSQZbu0.net
まちがえた
俺しかいない

105:デフォルトの名無しさん
18/04/15 22:10:33.68 33fSNzq50.net
俺もいるぞ

106:デフォルトの名無しさん
18/04/15 22:44:53.22 UX4y5Mn1a.net
てst

107:デフォルトの名無しさん
18/04/16 07:13:50.32 pzKlDNeX0.net
まともな話題はslackいっちゃうのかな。
匿名で喋りたいのはアンチ向きか

108:デフォルトの名無しさん
18/05/08 02:44:07.65 kruQSPFC0.net
別にアンチって訳じゃないけど、コンパイルが遅すぎる(特に最適化掛けた場合に)のはどうかと思う。
実行が速くてもその生成に時間が掛かれば無意味でしょう……。

109:デフォルトの名無しさん
18/05/08 05:31:20.68 4Vs0GKvV0.net
>>108
Rustで組んだ新Firefoxの動作が2倍ほど速くなったのは無意味?

110:デフォルトの名無しさん
18/05/08 07:00:09.03 EnN/pyur0.net
逆なら理解できるけど

111:デフォルトの名無しさん
18/05/08 08:36:06.07 Hy6hpXT/M.net
まあコンパイルは遅いわな。
ていうかcargoの仕組みが問題なだけか?

112:デフォルトの名無しさん
18/05/08 20:14:50.84 T0pMALEX0.net
rustcで単一ファイルだけコンパイルすると結構速いなと思った
cargoって警告無視のオプション(-Awarning)の有無でも一からビルドしようとしたりちょくちょくお粗末

113:デフォルトの名無しさん
18/05/10 20:35:06.28 zLx1ZI770.net
なんかRustってテスト用と製品用で別々の最適化を施せるんじゃなかったっけ。
俺は自分の為だけにRustを使ってるのであまり気にしたことがないが。

114:デフォルトの名無しさん
18/05/12 12:11:46.40 OzyUIrxEM.net
URLリンク(blog.rust-lang.org)
impl Trait来たから
久しぶりにさわってみるかな

115:デフォルトの名無しさん
18/05/23 12:09:39.17 6kVmIohDH.net
ほとんどc++に見えるの俺だけ?

116:デフォルトの名無しさん
18/05/23 12:29:18.87 4/oN1Bt60.net
みんな言ってる

117:デフォルトの名無しさん
18/05/23 23:15:50.94 Au5e7VGg0.net
確実にどんな人でも可能なネットで稼げる情報とか
念のためにのせておきます
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
C717P

118:デフォルトの名無しさん
18/05/28 09:59:15.77 N9/pBFPWH.net
rustを始めたんだけど
分かりそうで分からなくて
イライラする
なんだこの言語

119:デフォルトの名無しさん
18/05/28 11:01:04.58 4ZqBL5Re0.net
他の言語の経験にもよるけど 3000行ほど書けば慣れるよ(適当

120:デフォルトの名無しさん
18/05/28 11:14:23.86 N9/pBFPWH.net
actix_webでちょちょいとwebサービス作ろうと思っただけなんだが
externとuseみたいに、なんで同じようなものが2つ有るのとか
trait?、インプリすればいいだけならなんでこんな名前なんだとか

121:デフォルトの名無しさん
18/05/28 11:44:10.53 4ZqBL5Re0.net
察するにJava経験者かね
externは外部ライブラリのモジュールを参照する宣言
modは自身のフォルダ以下のモジュールを参照する宣言
useはモジュールの要素(Struct or Trait)を取り込む宣言
pub use self::MyStruct; // 要素をexportしたり
use std::io::Error as IOError; // as で別名つけたり
use super::Result; // 上位の型を取り込んだり(mod.rs以外からだと同一フォルダのmod.rsを見にいくので注意)
肝はselfとsuperを使いこなすことかと
このあたりリファレンスに書いてあるんで落ち着いて読んでもらえばいいけど
インプリについては、Trait = Interface(Java)の理解でそれほど差し支えない気もするけど
(定数は同じ階層のmoduleに移す)
AssosiatedTypeがあるように"Traitはコンパイル時に解決できる"ものってのを
意識してればその内に腑に落ちるんじゃないかな
ただこんなこと言うと
「RustのTraitは厳密なtraitじゃない論争」(Wikipedia参照)が始まっちゃうかもしれないので
ゆるく受け流してほしいところ

122:デフォルトの名無しさん
18/05/28 12:36:48.84 KX350+9ka.net
extern/use周りをrefineする話ってどうなった?

123:デフォルトの名無しさん
18/05/28 13:07:18.00 Yj33g/c2M.net
>>122
一応2018の予定には入ってるけどまだ作業中じゃない?
URLリンク(rust-lang-nursery.github.io)

124:デフォルトの名無しさん
18/05/28 14:35:19.27 N9/pBFPWH.net
チュートリアルの和訳のところを読んでいるけど
誰が訳したんだろう。。。

125:デフォルトの名無しさん
18/05/28 15:45:35.01 AY4+K2YC0.net
extern crateは、includeとかload libraryぐらいの意味だと思えばいいと思うが、
「え、それ、Cargo.tomlにもう書いたやん」って思うのは当然の感覚だな

126:デフォルトの名無しさん
18/05/28 15:47:39.28 N9/pBFPWH.net
しばらくしたら言語仕様変わりそうだなあこれ
勉強していくべきなのかどうか迷う

127:デフォルトの名無しさん
18/05/28 16:38:01.86 WepGeDn70.net
仕様の改定はc++のようにコンパイラのリリースとは別に2〜3年毎に定めることになってる
将来のコンパイラでも古い仕様を選択して使えるはず

128:デフォルトの名無しさん
18/05/28 17:33:13.35 dK7cJGyKa.net
どんな言語でも利用者多ければライブラリーのトレンド変わっていって学び直しはあるし
言語仕様の変更だけ特別視する理由が分からん

129:デフォルトの名無しさん
18/05/28 18:01:33.70 b/gKZOsn0.net
ver1.0になったし、firefoxに200kstepのソースがあるから始めるなら今でしょ

130:デフォルトの名無しさん
18/05/28 21:33:55.19 hIMCbSeD0.net
ruby1.8から1.9とか
python2から3の変更とか
嫌じゃん
言語もライブラリも混在してぐちゃぐちゃ

131:
18/05/28 22:15:42.81 dVAXJXVu0.net
>>124
和訳は最新に追いついていないと思います、公式英文を確認したほうがいい

132:デフォルトの名無しさん
18/05/28 23:47:10.84 cVR0FGXk0.net
Rustの場合仕様変更の影響を受ける記述はコンパイラがwarning(とsuggestion)出してくれるみたいだし
むしろライブラリのアップデートより楽なんじゃないかな

133:デフォルトの名無しさん
18/05/29 08:16:58.71 dnBokp3T0.net
やりたいことをするのに1日使って50%しかできなかった
自分には無理だこの言語

134:デフォルトの名無しさん
18/05/29 08:53:39.83 GEfewF+tM.net
50%できればすごいって

135:デフォルトの名無しさん
18/06/01 07:30:04.93 gpIIxUGF0.net
1.26の新機能自分のcrateにもう入れた?

136:デフォルトの名無しさん
18/06/01 19:39:19.80 RsiXZK4kM.net
土台?

137:デフォルトの名無しさん
18/06/11 19:45:35.17 woYxJr3K0.net
ここにまともなRustユーザいないのは年寄りしかいないからなのかなぁ

138:デフォルトの名無しさん
18/06/12 00:28:40.74 U7oXkFlj0.net
slackかtwitterでコミュニケーションとれるので5chへ書き込みたい事情があまりない

139:
18/06/12 00:34:57.69 QT2PgMnm0.net
>>138
おすすめのハッシュタグはなんでしょうか?

140:デフォルトの名無しさん
18/06/12 08:25:35.49 ESFTg/QrM.net
そう言われてみると確かにない。

141:デフォルトの名無しさん
18/06/12 09:41:15.21 Sk+2Pu3l0.net
もっとメジャーになってslackが荒れて来たらここもワンちゃん

142:デフォルトの名無しさん
18/06/12 12:05:43.89 QKuSZN5/a.net
ハッシュタグというより界隈の人間フォローしてる

143:デフォルトの名無しさん
18/06/12 19:39:13.56 twlm3/XD0.net
slackで発言できないアンチにしか存在価値がないのかぁ

144:デフォルトの名無しさん
18/06/12 21:30:56.05 d/RZ9PcJ0.net
slackのどこで喋ってるの?さ

145:デフォルトの名無しさん
18/06/13 07:40:50.77 Iw3p0Ou70.net
アンチに限らず匿名文化は一定数必要でしょう。

146:デフォルトの名無しさん
18/06/13 13:01:46.22 jLut3S1H0.net
つまり変な人でもスレに繰るなら、山の賑わい人気の証ってことね

147:デフォルトの名無しさん
18/06/23 20:45:08.63 MX9PBj5g0.net
Vec内のアイテムを複数条件やand or等をユーザに指定させてフィルタリングをしたいのですが
無理にでもSQL使うべきでしょうか

148:デフォルトの名無しさん
18/06/23 21:11:19.63 SR6K28vn0.net
ユーザってのはどういうレイヤの話をしてるの?もう少し具体的に書かないと意味不明

149:デフォルトの名無しさん
18/06/24 23:27:10.18 FVTH6Flp0.net
values.iter().filter(hoge).filter(fuga).filter(piyo)
フィルターを何度がけすると型がやばそう

150:デフォルトの名無しさん
18/06/25 00:28:41.79 TWt9PpKD0.net
強引にやるのはやばい感じだね
URLリンク(ideone.com)

151:デフォルトの名無しさん
18/06/25 07:08:50.50 xxjb5DLL0.net
調べてみるとfiltersというクレートがありました

152:デフォルトの名無しさん
18/06/28 08:09:41.33 t6K5m67F0.net
New Photon Release of Eclipse IDE Ships With Full Rust Support
URLリンク(www.eclipse.org)

153:デフォルトの名無しさん
18/07/01 02:21:52.91 hOXxhpxn0.net
いやじゃ、いやじゃ、Eclipseなんぞ使いとうない

154:デフォルトの名無しさん
18/07/01 03:02:12.97 T78MqQu/0.net
みんなどんな環境で書いてるの?今はvscode使ってるんだけどrlsがあまりに不安定すぎてストレスが…

155:デフォルトの名無しさん
18/07/01 06:22:17.39 3lsiwbVs0.net
vscodeだよ
racerも不安定だったような

156:デフォルトの名無しさん
18/07/01 09:29:47.37 61/yGhxs0.net
emacs + flycheck
racerは重すぎるんでOFFにしてる

157:デフォルトの名無しさん
18/07/01 15:40:20.37 ep584YMHF.net
秀丸

158:デフォルトの名無しさん
18/07/01 18:12:28.40 VIP13YQk0.net
禿丸ってなに?

159:デフォルトの名無しさん
18/07/01 19:19:06.36 3lsiwbVs0.net
こっちまでネタスレかよ

160:デフォルトの名無しさん
18/07/03 18:54:31.94 A246qspJM.net
URLリンク(i.imgur.com)

161:デフォルトの名無しさん
18/07/04 21:50:46.22 gFgZc5FG0.net
5PW

162:デフォルトの名無しさん
18/07/05 00:59:18.40 lJi2a9VDM.net
おーい、hgmr

163:デフォルトの名無しさん
18/07/28 09:13:36.59 pjkfXvHGM.net
hnmr王子〜♪

164:デフォルトの名無しさん
18/07/29 02:13:01.57 QHCaZ13N0.net
まさか繋いでくれる人がいるとは思わなかった

165:デフォルトの名無しさん
18/07/31 16:45:34.48 0aJU5h1JM.net
花村てなんや
オーバーウォッチか

166:デフォルトの名無しさん
18/08/05 20:37:41.10 XPCi/u53M.net
王子に対し無礼であろう!
URLリンク(www.nhk.or.jp)


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1875日前に更新/39 KB
担当:undef