تایپ‌های وابسته

تایپ‌های مرتبط تایپ‌هایی جایگزین هستند که توسط پیاده‌سازی trait تأمین می‌شوند.

#[derive(Debug)]
struct Meters(i32);
#[derive(Debug)]
struct MetersSquared(i32);

trait Multiply {
    type Output;
    fn multiply(&self, other: &Self) -> Self::Output;
}

impl Multiply for Meters {
    type Output = MetersSquared;
    fn multiply(&self, other: &Self) -> Self::Output {
        MetersSquared(self.0 * other.0)
    }
}

fn main() {
    println!("{:?}", Meters(10).multiply(&Meters(20)));
}
  • تایپ‌های مرتبط گاهی اوقات "تایپ‌های خروجی" نیز نامیده می‌شوند. نکته کلیدی این است که پیاده‌ساز، نه فراخواننده، این تایپ را انتخاب می‌کند.

  • بسیاری از traitهای کتابخانه استاندارد دارای نوع‌های مرتبط هستند، از جمله اپراتورهای حسابی و Iterator.