プログラミング言語 Rust 4【ワッチョイ】 (302レス)
上下前次1-新
抽出解除 レス栞
9(3): デフォルトの名無しさん (ワッチョイ 392d-FSib) [sage] 2018/01/12(金)20:43 ID:r1exnGKH0(2/4)
申し訳ありません 途中送信してしまいました
コードをplaygroundに移しました
https://play.rust-lang.org/?gist=10bd65d0bfaf8b5117399b18bd8eb0d2
VecのDisplay::fmtをカスタマイズしたくて上の様にMyTypeを作成したのですが
Vecのメソッド委譲するためのコードを手書きする作業が煩雑になって困っています
何か上手い回避策は無いでしょうか?
10(1): デフォルトの名無しさん (ワッチョイ 66e8-AMuz) [sage] 2018/01/12(金)21:23 ID:B4BnwQ220(1/2)
>>9
私も初心者で分からないですが最終的に何がしたいんでしょうか?
11(1): 9 (ワッチョイ 392d-FSib) [sage] 2018/01/12(金)21:44 ID:r1exnGKH0(3/4)
>>10
レスどうもです
Vec(他標準 struct)のDisplay::fmt出力をカスタマイズしたいんです 例えば
・要素数が多い場合、最初の数個を出力して残りを省略するとか
・要素の出力が長くなる場合、適当なところで改行するとか
・インデントを受け付けてネストしてる場合は改行とインデントで整形するとか
その上でVecのインターフェースをそのまま使いたいんですが
>>9のように新規の構造体を作る場合 手書きで委譲せねばならず
どうにか上手く出来ないもんかな……と
13(1): デフォルトの名無しさん (アークセー Sxbd-YNmt) [sage] 2018/01/12(金)23:39 ID:XT/5sCZ8x(1)
>>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も簡単に実装できるから不自由は無くなるはず
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.028s