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:EGydBhQv02デフォルトの名無しさん (アウアウカー Sac7-FEJ7)
2017/12/24(日) 22:11:46.18ID:Ye7s35LEa >>1乙
3デフォルトの名無しさん (ワッチョイ 337f-G8t+)
2017/12/26(火) 19:52:11.75ID:2mEdN5M00 皆知ってるかもしれないけど、https://github.com/rust-unofficial/too-many-lists は良いね
公式のbookには無かった「自分で書いてみた時にハマる箇所と解決法」が丁寧に書いてあるんで、
特にプログラミング経験者でRust初学者には自信を持ってお勧めできる
公式のbookには無かった「自分で書いてみた時にハマる箇所と解決法」が丁寧に書いてあるんで、
特にプログラミング経験者でRust初学者には自信を持ってお勧めできる
4デフォルトの名無しさん (ワッチョイ cfe8-V2ES)
2017/12/27(水) 07:28:12.89ID:UvJKqKam05デフォルトの名無しさん (ワッチョイ 337f-G8t+)
2017/12/27(水) 10:23:26.96ID:TP7XdM/O0 製本?したものを上げてるサーバーが結構長いこと落ちてるね
1. cargo install mdbookでmdbookをインストール
2. git cloneで>>3のリポジトリを取ってくる
3. 取ってきたディレクトリでmdbookを実行
4. book/ にhtmlで製本されたものが出力される
ので、是非読んで欲しい。may not live longとかcannot moveとかで怒られまくってる人なら共感しながら読めるはず
1. cargo install mdbookでmdbookをインストール
2. git cloneで>>3のリポジトリを取ってくる
3. 取ってきたディレクトリでmdbookを実行
4. book/ にhtmlで製本されたものが出力される
ので、是非読んで欲しい。may not live longとかcannot moveとかで怒られまくってる人なら共感しながら読めるはず
6デフォルトの名無しさん (ドコグロ MM3f-Ur+I)
2018/01/09(火) 09:45:01.64ID:9pH3pf0PM アンチスレのほうが伸びてるやん
枯れ木も山の賑わい
枯れ木も山の賑わい
7デフォルトの名無しさん (ワッチョイ 9f9f-SaK+)
2018/01/09(火) 11:34:47.34ID:mVHM72Ck08デフォルトの名無しさん (ワッチョイ 392d-FSib)
2018/01/12(金) 20:30:43.24ID:r1exnGKH0 教えてください
VecのDisplay::fmtをカスタマイズしたくて
type MyType<T> = (Vec<T>);
impl std::fmt::Display for MyType {
}
VecのDisplay::fmtをカスタマイズしたくて
type MyType<T> = (Vec<T>);
impl std::fmt::Display for MyType {
}
9デフォルトの名無しさん (ワッチョイ 392d-FSib)
2018/01/12(金) 20:43:39.15ID:r1exnGKH0 申し訳ありません 途中送信してしまいました
コードをplaygroundに移しました
https://play.rust-lang.org/?gist=10bd65d0bfaf8b5117399b18bd8eb0d2
VecのDisplay::fmtをカスタマイズしたくて上の様にMyTypeを作成したのですが
Vecのメソッド委譲するためのコードを手書きする作業が煩雑になって困っています
何か上手い回避策は無いでしょうか?
コードをplaygroundに移しました
https://play.rust-lang.org/?gist=10bd65d0bfaf8b5117399b18bd8eb0d2
VecのDisplay::fmtをカスタマイズしたくて上の様にMyTypeを作成したのですが
Vecのメソッド委譲するためのコードを手書きする作業が煩雑になって困っています
何か上手い回避策は無いでしょうか?
10デフォルトの名無しさん (ワッチョイ 66e8-AMuz)
2018/01/12(金) 21:23:37.23ID:B4BnwQ220 >>9
私も初心者で分からないですが最終的に何がしたいんでしょうか?
私も初心者で分からないですが最終的に何がしたいんでしょうか?
119 (ワッチョイ 392d-FSib)
2018/01/12(金) 21:44:35.31ID:r1exnGKH012デフォルトの名無しさん (ワッチョイ 66e8-AMuz)
2018/01/12(金) 22:44:10.61ID:B4BnwQ22013デフォルトの名無しさん (アークセー Sxbd-YNmt)
2018/01/12(金) 23:39:08.93ID:XT/5sCZ8x >>9 https://play.rust-lang.org/?gist=eec6671ba201493eb61891447824b92f&version=stable
DerefとDerefMutを実装するといい。
↓にあるDeref Coarcionっていうコンパイラの機能で、x: MyType<T>に対し、&xが&MyType<T>とも&Vec<T>ともみなしてくれるようになる
https://doc.rust-lang.org/book/second-edition/ch15-02-deref.html#implicit-deref-coercions-with-functions-and-methods
更に追加でIntoとFromも簡単に実装できるから不自由は無くなるはず
DerefとDerefMutを実装するといい。
↓にあるDeref Coarcionっていうコンパイラの機能で、x: MyType<T>に対し、&xが&MyType<T>とも&Vec<T>ともみなしてくれるようになる
https://doc.rust-lang.org/book/second-edition/ch15-02-deref.html#implicit-deref-coercions-with-functions-and-methods
更に追加でIntoとFromも簡単に実装できるから不自由は無くなるはず
149 (ワッチョイ 392d-FSib)
2018/01/12(金) 23:49:12.53ID:r1exnGKH0 >>12
ごもっともです
self.0に委譲するマクロが上手く書けなかった経験があり
それに引きずられて本質を見失ってました
コードを整理していったらいけそうな感じになりました
https://play.rust-lang.org/?gist=960819f1fb1b5f9988a1c58cab2b1b9e&version=stable
ありがとうございます
>>13
ああ、なるほど
Derefは思い至ってませんでした メソッド委譲の解決になりそうで助かります
こちらもありがとうございます
ごもっともです
self.0に委譲するマクロが上手く書けなかった経験があり
それに引きずられて本質を見失ってました
コードを整理していったらいけそうな感じになりました
https://play.rust-lang.org/?gist=960819f1fb1b5f9988a1c58cab2b1b9e&version=stable
ありがとうございます
>>13
ああ、なるほど
Derefは思い至ってませんでした メソッド委譲の解決になりそうで助かります
こちらもありがとうございます
15デフォルトの名無しさん (ワッチョイ 66e8-AMuz)
2018/01/13(土) 07:02:43.11ID:PvY+igkm0 なるほど
16デフォルトの名無しさん (ワッチョイ 66e8-AMuz)
2018/01/13(土) 10:23:49.57ID:PvY+igkm017デフォルトの名無しさん (アークセー 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
このスレを読んでる人に情報共有してるだけだよ
このスレを読んでる人に情報共有してるだけだよ
レスを投稿する
ニュース
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★8 [ぐれ★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- いじめ後遺症 15年前のトラウマに苦悩する当事者「夢の中に出てくる」「された側は一生ものの傷」 [♪♪♪★]
- 【実況】博衣こよりのえちえちダンガンロンパ6🧪
- 【実況】博衣こよりのえちえちダンガンロンパ5🧪
- これっておかしい??
- 🏡パン🍞つー✌まる👌見え👊😅👊
- 【正論】検察「山上よ、どんな事情があろうと暴力が許されない」 [442080748]
- 実写映画「ストリートファイター」のキャラアートが公開。何か知らん人がいる…… [624898991]
