Rustのstructとtraitって似てるよね

κeenです。関連型について考えてたらtraitがstructに見えてきたので一筆。小ネタです。

structは普通の構造体とtupl structと言われる形式二種類あります。

struct Color {
  r: u8,
  g: u8,
  b: u8,
}
struct Color(u8, u8, u8);

traitはというと関連型と型パラメータ二種類あります。

trait Into {
  type Item;
}
trait Into<T>{}

インスタンス化も似てます。

// struct
struct Color {
  r: 255,
  g: 0,
  b: 0,
}

struct Color(255, 0, 0)
// trait
struct Dummy;

impl Into for Dummy {
  type Item = i8
}

impl Into<i8> for Dummy {}

また、両者の使い分けも名前で参照したいかor手軽に使いたいかで使い分けます。

以上小ネタでした。

Written by κeen
Older article
Rustのプロセス