تایپهای وابسته
تایپهای مرتبط تایپهایی جایگزین هستند که توسط پیادهسازی 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.