プログラミング言語 Rust 4【ワッチョイ】 (302レス)
1-

1
(1): (ワッチョイ 83b3-KDL3) 2017/12/24(日)18:27 ID:EGydBhQv0(1) AAS
Mozilla発のプログラミング言語「Rust」のスレです

■公式
外部リンク:www.rust-lang.org
外部リンク:blog.rust-lang.org
外部リンク:github.com

■ワッチョイ
スレ建て時、一行目に
!extend:on:vvvvv:1000:512
を入れること

■派生元スレ
省2
2: (アウアウカー Sac7-FEJ7) 2017/12/24(日)22:11 ID:Ye7s35LEa(1) AAS
>>1
3
(3): (ワッチョイ 337f-G8t+) 2017/12/26(火)19:52 ID:2mEdN5M00(1) AAS
皆知ってるかもしれないけど、外部リンク:github.com は良いね
公式のbookには無かった「自分で書いてみた時にハマる箇所と解決法」が丁寧に書いてあるんで、
特にプログラミング経験者でRust初学者には自信を持ってお勧めできる
4: (ワッチョイ cfe8-V2ES) 2017/12/27(水)07:28 ID:UvJKqKam0(1) AAS
>>3
しらんかた
webのやつはみれなくなってるね
5: (ワッチョイ 337f-G8t+) 2017/12/27(水)10:23 ID:TP7XdM/O0(1) AAS
製本?したものを上げてるサーバーが結構長いこと落ちてるね
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 ID:9pH3pf0PM(1) AAS
アンチスレのほうが伸びてるやん
枯れ木も山の賑わい
7: (ワッチョイ 9f9f-SaK+) 2018/01/09(火)11:34 ID:mVHM72Ck0(1) AAS
>>3
外部リンク:cglab.ca
読めるようになってるな。
8: (ワッチョイ 392d-FSib) 2018/01/12(金)20:30 ID:r1exnGKH0(1/4) AAS
教えてください

VecのDisplay::fmtをカスタマイズしたくて
type MyType<T> = (Vec<T>);

impl std::fmt::Display for MyType {

}
9
(3): (ワッチョイ 392d-FSib) 2018/01/12(金)20:43 ID:r1exnGKH0(2/4) AAS
申し訳ありません 途中送信してしまいました
コードをplaygroundに移しました

外部リンク:play.rust-lang.org

VecのDisplay::fmtをカスタマイズしたくて上の様にMyTypeを作成したのですが
Vecのメソッド委譲するためのコードを手書きする作業が煩雑になって困っています

何か上手い回避策は無いでしょうか?
10
(1): (ワッチョイ 66e8-AMuz) 2018/01/12(金)21:23 ID:B4BnwQ220(1/2) AAS
>>9
私も初心者で分からないですが最終的に何がしたいんでしょうか?
11
(1): 9 (ワッチョイ 392d-FSib) 2018/01/12(金)21:44 ID:r1exnGKH0(3/4) AAS
>>10
レスどうもです
Vec(他標準 struct)のDisplay::fmt出力をカスタマイズしたいんです 例えば
・要素数が多い場合、最初の数個を出力して残りを省略するとか
・要素の出力が長くなる場合、適当なところで改行するとか
・インデントを受け付けてネストしてる場合は改行とインデントで整形するとか

その上でVecのインターフェースをそのまま使いたいんですが
>>9のように新規の構造体を作る場合 手書きで委譲せねばならず
どうにか上手く出来ないもんかな……と
12
(1): (ワッチョイ 66e8-AMuz) 2018/01/12(金)22:44 ID:B4BnwQ220(2/2) AAS
>>11
その用途ならVecに別な名前のメソッドを直接implしちゃってそっち呼び出せばいいような気がしたんですが

println!("{}", v.my_fmt());

みたいに
13
(1): (アークセー Sxbd-YNmt) 2018/01/12(金)23:39 ID:XT/5sCZ8x(1) AAS
>>9 外部リンク:play.rust-lang.org

DerefとDerefMutを実装するといい。
↓にあるDeref Coarcionっていうコンパイラの機能で、x: MyType<T>に対し、&xが&MyType<T>とも&Vec<T>ともみなしてくれるようになる
外部リンク[html]:doc.rust-lang.org

更に追加でIntoとFromも簡単に実装できるから不自由は無くなるはず
14: 9 (ワッチョイ 392d-FSib) 2018/01/12(金)23:49 ID:r1exnGKH0(4/4) AAS
>>12
ごもっともです
self.0に委譲するマクロが上手く書けなかった経験があり
それに引きずられて本質を見失ってました
コードを整理していったらいけそうな感じになりました
外部リンク:play.rust-lang.org
ありがとうございます

>>13
ああ、なるほど
Derefは思い至ってませんでした メソッド委譲の解決になりそうで助かります
省1
15: (ワッチョイ 66e8-AMuz) 2018/01/13(土)07:02 ID:PvY+igkm0(1/2) AAS
なるほど
16
(2): (ワッチョイ 66e8-AMuz) 2018/01/13(土)10:23 ID:PvY+igkm0(2/2) AAS
外部リンク:stackoverflow.com

ぐぐったらこんな議論も。
17
(2): (アークセー Sxbd-YNmt) 2018/01/13(土)19:09 ID:zJNsIIn8x(1) AAS
>>16の論旨は「MyType<T>は常にVec<T>として扱われても問題ないか?あるならDerefはおすすめしない」だと思うけど、
今回の場合はむしろMyType<T>は特別なことが無い限りVec<T>として使いたいんじゃないの?
18: 9 (ワッチョイ 392d-FSib) 2018/01/13(土)20:15 ID:5hbvxbkG0(1) AAS
>>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的な落とし所なのかなーといった印象です
省8
19: (ワッチョイ 66e8-AMuz) 2018/01/14(日)07:18 ID:oPMCDJ2h0(1/2) AAS
>>17
このスレを読んでる人に情報共有してるだけだよ
20: (ワッチョイ 66e8-AMuz) 2018/01/14(日)15:21 ID:oPMCDJ2h0(2/2) AAS
元スレやばいね
21: (ワッチョイ 0be8-udNJ) 2018/01/18(木)23:48 ID:HIA6V+PM0(1) AAS
オライリー届いた。
分厚すぎてわろたわ。読むの大変そう。
22: (ワッチョイ b7eb-URfH) 2018/01/29(月)13:41 ID:P6u1lvxj0(1/2) AAS
dyn Traitが入ってしばらくしたらBox<Trait>はdisconになるの?
23: (アウアウカー Sa33-jWYD) 2018/01/29(月)14:45 ID:gyvOdhISa(1/2) AAS
deprecated扱いになって警告を出し次のepochで削除とかだったと思う
24: (ワッチョイ b7eb-URfH) 2018/01/29(月)17:30 ID:P6u1lvxj0(2/2) AAS
impl Trait入ったらそもそもほとんど使わなくなるから気にしなくていいのか。
25: (アウアウカー Sa33-jWYD) 2018/01/29(月)17:48 ID:gyvOdhISa(2/2) AAS
使うケース減るのもそうだけどepochで機能削除する場合はソースコードの変換ツールが提供されるらしい
あと古いepochのソースはそのままコンパイルできるらしいから特に対応不要らしい
だから新しいepochにしか入っていない機能を使いたいcrateとかでなければ何もしなくても困らないはずだし
その場合でも変換ツール通せば簡単に対応できるはず
26: (ワッチョイ aee8-URfH) 2018/01/29(月)21:18 ID:ltX/HOsy0(1) AAS
なるほど
27: (アウアウカー Sa33-jWYD) 2018/01/31(水)12:10 ID:/dPh0x6ka(1) AAS
2018年のロードマップのRFC出てる
外部リンク:github.com
impl Traitついに安定化されるのか
28: (ドコグロ MM32-URfH) 2018/01/31(水)19:12 ID:hEoUgsMbM(1) AAS
epoch releaseってのはどういうことなんだってばよ?
29: (ワッチョイ 57b3-skLA) 2018/02/04(日)00:05 ID:VmMujkXk0(1) AAS
map: BTreeMap<K,V>で、keyが無かったら挿入、あったら格納されてる値vに応じて新しい値new_vに更新するか決めるってやりたいんだけど、
let v = map.entry(key).or_insert(new_v);
if ... {
*v = new_v;
}
よりもっと綺麗な書き方ある?
30: (ワッチョイ 9f9f-hXWc) 2018/02/04(日)01:05 ID:qOX3lZ+s0(1) AAS
and_modify() ?
1-
あと 272 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.023s