1 名前:デフォルトの名無しさん [2012/01/25(水) 20:05:49.96 .net] Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。 www.rust-lang.org/
101 名前:デフォルトの名無しさん [2014/01/17(金) 11:19:41.93 .net] https://github.com/mozilla/rust/blob/0.9/RELEASES.txt www.rust-lang.org/ sourceforge.jp/magazine/14/01/15/203000 0.9になっても結構変更あるな。Managed boxes (@) が非推奨てw
102 名前:デフォルトの名無しさん mailto:sage [2014/01/17(金) 11:37:16.72 .net] 1.0は2014年末の予定とか cmr.github.io/blog/2014/01/12/the-state-of-rust-0-dot-9/
103 名前:デフォルトの名無しさん [2014/01/17(金) 12:00:54.65 .net] Rust on rails、トップシェアになる
104 名前:デフォルトの名無しさん mailto:sage [2014/01/17(金) 12:01:44.79 .net] 「レール上の錆」か……
105 名前:デフォルトの名無しさん mailto:sage [2014/01/18(土) 20:24:08.48 .net] あと1年もこの調子で変更すんの? とっとと1.0出してよ
106 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 13:30:19.84 .net] おい、台本ちゃんと読めよ そこの台詞は 「けっノロマめ、俺がフォークして先に1.0を立ち上げちまったぜ」 だろ
107 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 22:35:01.51 .net] どちらかというと v1.0 以降の破壊的変更の方に期待してしまう(マゾ)。
108 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 22:46:55.05 .net] 良く訓練されたD言語erのような性癖だな
109 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 22:49:10.16 .net] Feature gate なんて大義名分があるんだからいくらでも破壊的変更してきそうだよな ワクワクする
110 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 19:40:13.77 .net] rust速いらしいけどgoに比べて並列化し辛いから結局goのが速いって聞いてんですけどそんな感じなの?
111 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 22:04:36.27 .net] シングルスレッド遅い言語はどんなに並列化しても無駄
112 名前:デフォルトの名無しさん mailto:sage [2014/02/22(土) 04:50:05.65 .net] >>110 その手の、Erlangっぽい並列処理は、ライブラリレベルで実装可能。 Scala/JavaのAkkaがその実例。
113 名前:デフォルトの名無しさん mailto:sage [2014/03/17(月) 11:54:37.97 ID:JigeyuIH.net] 破壊的変更が毎週たくさんあるね
114 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 07:00:36.43 ID:aNkl6/ok.net] 次期バージョンは0.10かね
115 名前:デフォルトの名無しさん [2014/04/14(月) 02:41:46.21 ID:AgBD4gFn.net] v0.10 is coming. www.rust-lang.org/ https://github.com/mozilla/rust/blob/master/RELEASES.txt ・@ ポインタを remove ・do キーワードを remove ・etc...
116 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 09:58:53.67 ID:Fj6ednoX.net] なんで1.0が出てから始めないん
117 名前:デフォルトの名無しさん mailto:sage [2014/06/09(月) 22:39:55.58 ID:nLviVS/4.net] DとかGoとかポストC気取ってるくせにCを駆逐する気がない言語より頑張って欲しい
118 名前:デフォルトの名無しさん mailto:sage [2014/06/12(木) 00:32:07.72 ID:e6x9cJlC.net] 頑張って欲しいけど、1.0 が遅いから Swift に浮気しちゃうぜ
119 名前:デフォルトの名無しさん mailto:sage [2014/07/06(日) 20:45:53.22 ID:8W/9eoDc.net] rustでRAIIはどう実現したら良いのでしょうか
120 名前:デフォルトの名無しさん [2014/07/09(水) 09:47:39.31 ID:ICY9ltLE.net] v0.11 is coming. www.rust-lang.org/ https://github.com/mozilla/rust/blob/master/RELEASES.txt ・構造体のフィールドがデフォルトで private に ・private enum 変数が不許可に ・priv キーワードを remove ・`use foo, bar, baz;` シンタックスが remove ・……
121 名前:デフォルトの名無しさん mailto:sage [2014/07/26(土) 21:14:51.31 ID:fwCKMr/Y.net] Rust言語の明日は何処だ
122 名前:デフォルトの名無しさん mailto:sage [2014/08/08(金) 02:51:15.07 ID:lSQPAJbI.net] C++を駆逐するなら大歓迎だ
123 名前:デフォルトの名無しさん [2014/08/10(日) 14:07:48.02 ID:FUhgKhzg.net] >>122 俺も同意。 Rust頑張れ。
124 名前:デフォルトの名無しさん mailto:sage [2014/08/10(日) 15:13:03.34 ID:rgbQez8I.net] それならDとGoに勝たないといけない おれはRustに頑張って欲しいから早く1.0だして欲しいけど、もう手遅れな気はしてる
125 名前:デフォルトの名無しさん mailto:sage [2014/08/10(日) 15:30:16.69 ID:AMGvL8Wx.net] DはともかくGoは厳しかろうなあ
126 名前:デフォルトの名無しさん mailto:sage [2014/08/10(日) 16:15:08.44 ID:559thib6.net] GoではC++の駆逐はできないと思う。 たとえば、goでOSを作れるかというとそうではない
127 名前:デフォルトの名無しさん mailto:sage [2014/08/10(日) 18:47:02.34 ID:mPHamUGI.net] C++の代わりになるのはCで作られたlibやDLLを直接呼べなくてはならないが Dはヘッダーファイル作ればできるけど Goは問題外だった。 rustってどうやんの?
128 名前:デフォルトの名無しさん mailto:sage [2014/08/10(日) 20:21:22.22 ID:7WLKXo+Z.net] extern "C" とかつけて関数宣言すると、Cの関数が呼び出せる。 呼び出し時の余計なオーバーヘッドとかは今はなくなってるはず
129 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 23:54:09.61 ID:pueQuLPm.net] 次のC++17までに実用になってなかったら逆に駆逐されるな
130 名前:デフォルトの名無しさん mailto:sage [2014/08/13(水) 16:43:46.11 ID:450ISMpY.net] >>128 おお、良いぞ。そんな感じで十分だ。 C++は規格化に関わってる連中が(ここだけの話)キモいので駆逐してほしい
131 名前:デフォルトの名無しさん mailto:sage [2014/08/20(水) 17:02:00.56 ID:cYiGvIKn.net] C++で中間コード吐き出すコンパイラ作ったほうが喜ばれる
132 名前:デフォルトの名無しさん mailto:sage [2014/09/17(水) 09:15:58.87 ID:y1+4ScdQ.net] Road to Rust 1.0 blog.rust-lang.org/2014/09/15/Rust-1.0.html
133 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 01:19:00.42 ID:oDXr8xMe.net] はよ 1.0 になれ
134 名前:デフォルトの名無しさん [2014/09/25(木) 22:01:45.45 ID:/UWIY2F4.net] Mozillaは永遠にベータ版しか出さん連中だから無理
135 名前:デフォルトの名無しさん [2014/10/02(木) 23:11:57.53 ID:C3h6KQmN6] これ、C風の見かけのために curly braces { } 使ってるだけで、中身は露骨にML系言語だよね。 もっとML寄りの記法で書けるようにしてほしいなあ。
136 名前:デフォルトの名無しさん mailto:sage [2014/10/10(金) 08:24:39.99 ID:iwp7TUt6.net] [rust-dev] Rust 0.12.0 released https://mail.mozilla.org/pipermail/rust-dev/2014-October/011267.html
137 名前:デフォルトの名無しさん mailto:sage [2014/10/10(金) 12:32:52.94 ID:tQ87SuYa.net] 1.0コネー
138 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 00:12:55.83 ID:wVymFFZ9.net] だいぶ見ないうちにもはや別言語になっとる。 es6みたいにどうせ新機能使ったら互換性なくなるのにbreak the webとか抜かして右往左往し続けて 仕様がコロコロ変更されるより元から破壊的変更上等だけどバージョンが安定しないな。
139 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 23:09:08.17 ID:fD2p7D4P.net] moveって名前の関数つくれないんだ?
140 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 01:56:12.89 ID:NYVg+AhM.net] moveはキーワードだから、使えない
141 名前:デフォルトの名無しさん [2014/10/21(火) 13:03:52.26 ID:4Y1dgKOT.net] 仕様が安定するのはいつですか
142 名前:デフォルトの名無しさん mailto:sage [2014/10/29(水) 00:30:10.05 ID:uvk5/wlk.net] &strとstringやっぱめんどくさい。 せめてリテラルの中に変数値埋め込むような書式が欲しいけどそれだとそもそも&strにならない。 もう文字列リテラルはstringにしてくれよ
143 名前:デフォルトの名無しさん mailto:sage [2014/10/29(水) 08:02:03.12 ID:PJ7XKhhs.net] 文字列リテラル書く度にメモリの動的確保するのは、 さすがに発狂ものだろ slicing_syntax使えば、.as_slice()が[]になるし、それで我慢してくれ
144 名前:デフォルトの名無しさん mailto:sage [2014/10/29(水) 08:43:24.44 ID:Seh2VPHk.net] stringといえばcoreutilsのコード読んでて思ったんですが https://github.com/uutils/coreutils/blob/master/src/cat/cat.rs > let show_nonprint = matches.opts_present(["A".to_string(), "e".to_string(), "t".to_string(), "v".to_string()]); こういういちいちto_string()してるコードもうちょっと上手く書けませんかね
145 名前:デフォルトの名無しさん mailto:sage [2014/10/29(水) 21:06:45.55 ID:GrpYtfpz.net] これの解決方法を教えてください melpon.org/wandbox/permlink/Ce549z8Z26NYtfpj
146 名前:デフォルトの名無しさん mailto:sage [2014/12/13(土) 09:03:40.20 ID:BbKnnj5O.net] Rust 1.0: Scheduling the trains blog.rust-lang.org/2014/12/12/1.0-Timeline.html はよ
147 名前:デフォルトの名無しさん mailto:sage [2015/01/05(月) 00:17:31.79 ID:62ndYAiq.net] 公式のGuideに従って Hello, world! コンパイルしたら600kBくらいのができたんだけど、これ何が入ってるの? たしかGoもこんなだったっけw
148 名前:デフォルトの名無しさん mailto:sage [2015/01/05(月) 23:04:03.12 ID:XrgG4/ce.net] >>147 標準ライブラリが静的リンクされてる。 jemallocとかサイズでかいらしい。 -C lto つけてリンク時最適化有効にすると若干サイズ縮むはず
149 名前:デフォルトの名無しさん mailto:sage [2015/01/09(金) 16:50:57.81 ID:1ny7jOif.net] ガイドページの右下に出てる Rust 1.0.0-nightly ea6f65c5f って何?
150 名前:デフォルトの名無しさん mailto:sage [2015/01/09(金) 21:31:25.08 ID:ecLcmkaN.net] ドキュメントのバージョンだよ。
151 名前:デフォルトの名無しさん mailto:sage [2015/01/10(土) 09:03:15.68 ID:qZSZ4EVX.net] 1.0のalpha来てた もうすぐ安定するんだと思うとなんだか感動する
152 名前:デフォルトの名無しさん mailto:sage [2015/01/10(土) 09:25:29.41 ID:aqSa96PR.net] 楽しみだね。
153 名前:デフォルトの名無しさん mailto:sage [2015/01/10(土) 10:50:52.48 ID:VYrUioRX.net] Guessing Gameまで来たら ↓が変な感じがする。値を返すかcontinueで離脱。例外みたいなノリなんだろうか let num = match input_num { Some(num) => num, None => { println!("Please input a number!"); continue; } };
154 名前:デフォルトの名無しさん mailto:sage [2015/01/12(月) 07:44:13.71 ID:V9nd0xt7.net] 見てきたけど uint に変換できない場合 None が返って来て、 もう一度 loop の最初からやり直し なだけじゃないか? Option で返って来るのに慣れてないのかな? 例外については下記が日本語訳(ただし、前のverなので文法が違うかもしれない) ttp://qiita.com/kondei/items/c7175ed278bb4fbd4d16
155 名前:153 mailto:sage [2015/01/12(月) 14:05:00.11 ID:uQy2oTpW.net] ああなるほど、None(と言うか() のことかな?)を返してからcontinue動作したと考えればいいのか
156 名前:デフォルトの名無しさん mailto:sage [2015/01/12(月) 14:14:00.52 ID:smRTP4TA.net] そこ俺も違和感あった HaskellやOCamlにおけるパターンマッチは条件分岐というよりも値の分解の意味合いがつよいと思うのだけど, Rustでは条件分岐としての側面が強いのかなと感じた 要するにif文ってことだよね
157 名前:デフォルトの名無しさん mailto:sage [2015/01/13(火) 00:20:23.58 ID:iAaaaZAE.net] 大域脱出と見ればそんなに違和感ないと思う bookに記載はされてないけど縦棒で複数のパターンに対応させることもできるのな match foo { Bar | Baz => do_X, Huga => do_Y _ => do_Other } みたいなのもいけた。無かったら嫌だなと思ってたがreferenceにはあった
158 名前:デフォルトの名無しさん mailto:sage [2015/01/13(火) 21:46:02.73 ID:oe8+YAa0.net] >>156 ガチの関数型とはなんか違うfeelingと言うか空気感を感じる
159 名前:デフォルトの名無しさん mailto:sage [2015/01/13(火) 22:27:52.83 ID:QfRKSulC.net] 関数からIteratorを返す方法が分かりません 具体的には型に何書いて良いか分からない
160 名前:デフォルトの名無しさん mailto:sage [2015/01/14(水) 00:27:11.46 ID:e9uoW40m.net] >>158 Rustの良さの一つではあると思う メモリモデルの問題で普通の関数型プログラミング言語と全く同じようには出来ない中で、なるべく関数型の良さを取り入れようという結果なんだろうな
161 名前:デフォルトの名無しさん mailto:sage [2015/01/14(水) 00:48:27.71 ID:MazRL5ri.net] >>159 関数の中身によるけど、 戻り値書かなかった場合のコンパイルエラーで出てる型名コピペすればたぶんいけると思う
162 名前:デフォルトの名無しさん mailto:sage [2015/01/15(木) 20:50:25.52 ID:b84/qUeG.net] 言語が固まったらREPLの開発も再開するよね
163 名前:デフォルトの名無しさん mailto:sage [2015/01/15(木) 21:34:03.91 ID:E2BgZv7k.net] RustでREPLはめんどくさそうだな 寿命とか でっかいひとつのスコープって考えたら別にむずかしくはないのな
164 名前:デフォルトの名無しさん mailto:sage [2015/01/16(金) 14:15:52.84 ID:9+9TOoEF.net] 1.0.0-alpha をビルドしてるんだけど configure に --libdir=/usr/lib64 を指定すると lib.rs がコンパイルエラーになってしまう 前からこんなんだったっけ・・・
165 名前:デフォルトの名無しさん mailto:sage [2015/01/16(金) 22:33:39.21 ID:KEq1J0ex.net] ここ最近の怒涛の変更はヤバい
166 名前:デフォルトの名無しさん mailto:sage [2015/01/17(土) 00:15:44.35 ID:Wxv5Etsa.net] clayもそうだったけど、llvm使った言語のビルドってすげー時間かかるのな。ナイトリービルド落とした方がええわ。
167 名前:デフォルトの名無しさん mailto:sage [2015/01/17(土) 02:06:27.12 ID:CWvWtJ6X.net] クロージャ周りが変更されまくってて全然わからん
168 名前:デフォルトの名無しさん mailto:sage [2015/01/17(土) 18:17:59.12 ID:H+D/soOr.net] そろそろ試してみようと思ったらまだそんな感じなの?
169 名前:デフォルトの名無しさん mailto:sage [2015/01/17(土) 18:38:22.05 ID:rzZFM78t.net] これから構文の変更は極力減らすらしいし、1.0がリリースされるまでのあと2〜3ヶ月は詰めの時期だろう ドキュメント周りは絶賛崩壊中。Rust by Exampleとか全然動かん(Issueは立ってるけど) まあ検索しても古いブログとか引っかかりまくるからな― なんかあったらGitHub該当レポをいちいち見に行くくらいのことをしないと勉強するのは厳しい
170 名前:デフォルトの名無しさん mailto:sage [2015/01/17(土) 18:40:22.92 ID:CWvWtJ6X.net] 構文の変更はなくてもAPIの変更はあったりするんだろうか
171 名前:デフォルトの名無しさん mailto:sage [2015/01/17(土) 19:02:31.26 ID:P4fG3Fn9.net] このスレ立ったときから安定したら使ってみようと思ってたけど もう少しらしいね
172 名前:デフォルトの名無しさん mailto:sage [2015/01/17(土) 19:41:57.99 ID:Om8PoyqQ.net] ベータのリリースサイクルでライブラリの安定化やるから、 APIはまだまだ変更されるはず
173 名前:デフォルトの名無しさん mailto:sage [2015/01/17(土) 20:40:08.53 ID:H+D/soOr.net] ベータ出てからも長そうだな...
174 名前:デフォルトの名無しさん mailto:sage [2015/01/19(月) 03:43:45.49 ID:b8H1tohZ.net] 1. 全ての値、変数はそれが定義されたスコープ内で死ぬ(読み書きできなくなる) 2. ある値を殺さずスコープの外に出すには、死ぬ前に外の変数に入れるしかない 3. ただし、参照を外に出すことはできない lifetimeの原則ってこんなもんだよね?これはまだ分かるけど、ownershipはも少し理解が必要。 マルチスレッドを学ぶときにきっと理解できると信じてる。
175 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 02:47:53.78 ID:CAQhwwqz.net] fnで定義される関数とクロージャって区別されてるのか。fnで定義できる関数は環境を持たないクロージャとして扱うことができるけど、逆は無理なのな。 fn map<S,T> (x:Vec<S>, f:fn(S) -> T) -> Vec<T> { ... } っていう高階関数はfnで定義される関数しか受け付けないが、 fn map<S,T,F:Fn(&S) -> T> (x:Vec<S>, f:F) -> Vec<T> { ... } は関数もクロージャも通す。 クロージャの定義を見ればコンパイル時に環境を持たないで済むか分かると思うんだけどなあ 関数 ∈ クロージャみたいな関係なんだから、関数で済むなら関数にして欲しい
176 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 07:57:01.37 ID:WTvBD7gs.net] unboxed closureならほぼ関数みたいに使えると思うけど。やりたいことは、boxingが必要なケース?
177 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 08:02:49.45 ID:WTvBD7gs.net] よくわからん事を言ってしまった。 そもそも、クロージャとして扱うってどういう意味で言っている? rustではクロージャ「型」というものは最近なくなってしまって、 ただFnを実装した型が関数のように呼び出すことが出来るだけという認識。 Fnを実装したある型が関数として定義されているか、 クロージャの構文を使って定義されているかは、 渡される側からは意識する必要がない。
178 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 14:02:52.06 ID:CAQhwwqz.net] >>177 クロージャとして扱うってのは>>175 の二番目のmap<S,T,F:Fn(&S)->T>っていう高階関数は、 fn foo(...)で定義された関数を渡すことができるし、let baz = |&:| { ... }とかやって定義したクロージャを渡すこともできる。 >>175 の一番目のmap<S,T>はfnで定義した関数は渡せるけど|&:| {...}は渡せない。 つまり、関数とクロージャは別物なんだけど、クロージャを受け取る高階関数は関数も受け取れる。 それを指して「クロージャを受け取れる高階関数は、普通の関数もクロージャとして扱う」っていう意味で言った。 referenceのfunction typeの項 doc.rust-lang.org/reference.html#function-types にもあるとおり、関数の型はfn(args) -> retと書けるもので、traitの実装とかではない。 一方でクロージャはFnトレイトの実装。違いは環境を持つか否か。
179 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 18:02:24.49 ID:5OYX7sX+.net] >>178 おそらくだけど、Rustの言語仕様で閉じる範囲に関しては、すべて区別せず Fn traitに統一したい意図があると思う。 関数型が残されているのはFFIの都合かと
180 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 20:43:45.16 ID:CAQhwwqz.net] そうなの?関数内で関数を定義できるからある程度は使えるんだけどな。 ついでに質問なんだけど、Fn traitの記法Fn(s) -> tってのはこれ専用の記法なの? それとも一般的な記法の一例?
181 名前:デフォルトの名無しさん mailto:sage [2015/01/21(水) 01:12:38.06 ID:YXeDnvLj.net] Fn みたいな () -> を使う記法はいまのところFnとFnMutとFnOnce専用だったはず。 他にこの記法使えるとうれしい場面があるならば提案すれば使えるようになるかも。 そもそもこの記法採用されたきっかけというのが、 Fn(A. B) -> C を desugar した形式の Fn<(A, B), C> が書きにくいというのもあるけど、 Fn のdesugarした形式自体がまだfixできていないから、 ひとまずsugarだけ使えるようにして実体の表記は使えなくしようというものだったはず。 実際、Fnの戻り値型はAssociated typeで与えるようにしようとか、 Foo()-> Aの記法は Foo<Output=A> の意味にしようとか、いろいろ議論があるらしい。 当面は、RFCウォッチすると議論が追えると思う。
182 名前:デフォルトの名無しさん [2015/01/21(水) 09:15:31.70 ID:mE4mMlsp.net] トップレベルで型注釈を強制するのはひとつの見識だとは思うんだが、 型の表記がもう少しスッキリしたマトモなものじゃないと面倒臭すぎる。 なんでそういうところはMLやHaskellを見習わなかったのか……
183 名前:デフォルトの名無しさん mailto:sage [2015/01/21(水) 11:29:22.51 ID:4FCeMM5/.net] >>182 本当だねえ。関数引数リストの中がゴミゴミしい
184 名前:デフォルトの名無しさん mailto:sage [2015/01/22(木) 01:22:08.93 ID:KmZyTX6h.net] ttps://github.com/rust-lang/rust/issues/20797?#issuecomment-69947098 associated typesを使っているtraitが拡張できん…
185 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 05:05:02.45 ID:47J/10kQ.net] >>184 の問題の再現コードは、 trait DeclaredTrait { type Type; } impl DeclaredTrait for i32 { type Type = i32; } struct Struct<B: DeclaredTrait> { b: B, b1: B::Type, } とあり、 Struct { b: 0, b1: 0}などとするとICEになるが、色々試した結果、Structを少し弄って struct Struct<T, B: DeclaredTrait<Type=T>> { ... とすれば回避できることが分かった。やったと小躍りしていたらfixされた。Oh...
186 名前:デフォルトの名無しさん mailto:sage [2015/01/29(木) 19:53:46.66 ID:zNgdEinm.net] arthurtw.github.io/2014/11/30/rust-borrow-lifetimes.html borrowingについてはbookより良い説明になってる。 stackoverflow.com/questions/22188088/what-does-a-scoped-lifetime-in-rust-actually-mean この解答はかなりlifetimeについて分かりやすかった。 lifetimeとsubtypingの類似性をまとめようと思ったが力尽きた。 1つの事柄を説明しようとすると別の関連項目も入れた方がいいなとかやってると膨大になる。
187 名前:デフォルトの名無しさん mailto:sage [2015/02/04(水) 22:01:24.98 ID:TC60WqWu.net] rustはじめました バカなんですけど教えてください fn main() { let mut a = &1is; let mut b = &2is; a = b; } b = a だと平気なのに a = b だと叱られます。なぜですか
188 名前:デフォルトの名無しさん mailto:sage [2015/02/05(木) 01:26:26.56 ID:dGetvNcg.net] 先に宣言した方がlifetimeが長くなるルールだから?
189 名前:デフォルトの名無しさん mailto:sage [2015/02/05(木) 01:47:21.88 ID:u4P5BLYw.net] nightlyなら通るよ>>187
190 名前:デフォルトの名無しさん mailto:sage [2015/02/05(木) 20:57:01.65 ID:xsa081YG.net] お二方どうも >>188 どこで寿命尽きるのかlifetimeムズカシイです >>189 通るのですか しかしエラー出ます rustc 1.0.0-nightly (eaf4c5c78 2015-02-02 15:04:54 +0000) githubのをビルドしないとダメでしょうか 面倒なのでブック読みながらバイナリの更新待ちます
191 名前:デフォルトの名無しさん mailto:sage [2015/02/06(金) 00:07:57.08 ID:ZZvCiYpX.net] 今なら2015-02-04のバイナリ落ちてくるよ
192 名前:デフォルトの名無しさん mailto:sage [2015/02/06(金) 01:45:16.44 ID:f5aiPF8n.net] うーん。変わらずエラーが出ます rustc 1.0.0-nightly (ba2f13ef0 2015-02-04 20:03:55 +0000) 本来>187はコンパイル通るものですか
193 名前:192 mailto:sage [2015/02/06(金) 01:49:34.64 ID:f5aiPF8n.net] エラーこんな感じで src/main.rs:3:14: 3:17 error: borrowed value does not live long enough src/main.rs:3 let mut b = &2is; ^~~ src/main.rs:2:17: 5:2 note: reference must be valid for the block suffix following statement 0 at 2:16... src/main.rs:2 let mut a = &1is; src/main.rs:3 let mut b = &2is; src/main.rs:4 a = b; src/main.rs:5 } src/main.rs:3:17: 5:2 note: ...but borrowed value is only valid for the block suffix following statement 1 at 3:16 src/main.rs:3 let mut b = &2is; src/main.rs:4 a = b; src/main.rs:5 }
194 名前:デフォルトの名無しさん mailto:sage [2015/02/06(金) 02:10:23.34 ID:9alBoo2L.net] playpenでも転けるし駄目っぽい
195 名前:デフォルトの名無しさん mailto:sage [2015/02/06(金) 17:39:55.66 ID:uj3RHvbm.net] nightlyで通ると言ってた者だが、1月24日のは通ったが、今日2月6日では通らなくなってた。
196 名前:デフォルトの名無しさん mailto:sage [2015/02/06(金) 23:25:09.25 ID:gZSM6axtP] やっぱりlifetimeの長い短いとちゃうかなぁ。 >let mut a = &1is; >let mut b = &2is; aの型は&'i isize bの型は&'j isize だとするとlifetimeの長さはi > jであるからaはlifetime i以上のisizeへの参照を要求する。 bのlifetimeはjであるからnot live long enoughなんじゃないかなぁ。
197 名前:デフォルトの名無しさん mailto:sage [2015/02/06(金) 23:36:12.02 ID:gZSM6axtP] うーん、でも fn print_type_of<T>(_: &T) -> () { let type_name = unsafe { (*std::intrinsics::get_tydesc::<T>()).name }; println!("{}", type_name); } fn main() { let mut a = &1is; let mut b = &2is; print_type_of(&a); print_type_of(&b); } の出力は &'static isize &'static isize やなぁ。
198 名前:デフォルトの名無しさん mailto:sage [2015/02/07(土) 01:46:20.54 ID:Gp97gMW3.net] やっぱりlifetimeの長い短いとちゃうかなぁ。 >let mut a = &1is; >let mut b = &2is; aの型は&'i isize bの型は&'j isize だとするとlifetimeの長さはi > jであるからaはlifetime i以上のisizeへの参照を要求する。 bのlifetimeはjであるからnot live long enoughなんじゃないかなぁ。
199 名前:デフォルトの名無しさん mailto:sage [2015/02/07(土) 01:46:51.82 ID:Gp97gMW3.net] うーん、でも fn print_type_of<T>(_: &T) -> () { let type_name = unsafe { (*std::intrinsics::get_tydesc::<T>()).name }; println!("{}", type_name); } fn main() { let mut a = &1is; let mut b = &2is; print_type_of(&a); print_type_of(&b); } の出力は &'static isize &'static isize やなぁ。
200 名前:デフォルトの名無しさん mailto:sage [2015/02/07(土) 08:13:43.05 ID:iwrmCGgo.net] print_type_of ってデバッグでしょっちゅう使うから、標準ライブラリに入ってると良いのに