如何实现泛型类型的 `From` 特征,并检索内部泛型类型?

问题描述 投票:0回答:1

例如我有以下通用结构:

use std::convert::From;

pub struct Rect<T> {
  pub top_left: (T, T), // 0 is x, 1 is y.
  pub bottom_right: (T, T), // 0 is x, 1 is y.
}

impl<T> Rect<T> {
  pub fn new(top_left: (T, T), bottom_right: (T, T)) -> Self {
    Rect { top_left, bottom_right }
  }
  pub fn height(&self) -> T {
    self.bottom_right.1 - self.top_left.1
  }
  pub fn width(&self) -> T {
    self.bottom_right.0 - self.top_left.0
  }
}

pub struct Size<T> {
  pub height: T,
  pub width: T,
}

impl<T> Size<T> {
  pub fn new(height: T, width: T) -> Self {
    Size { height, width }
  }
}

impl<T: Rect<H>> From<T> for Size<H> {
  fn from(rect: T) -> Size<H> {
    Size::new(rect.height() as T, rect.width() as T)
  }
}

我有两种通用类型:

Rect<T>
是一个矩形,它有左上角和右下角。
T
可以是
isize
usize
i32
等。矩形有
height
方法和
width
方法

Size<T>
是一个矩形的大小,它仅作为
height
width
,没有点。
T
可以是
isize
usize
i32

显然,

Rect<T>
可以转换为
Size<T>
,所以我想实现
From
特征。

但我就是不知道如何声明泛型参数

T
。请帮助我。

rust interface traits
1个回答
0
投票

感谢@cafce25,他的评论:

impl<T> From<Rect<T>> for Size<T> {
实际上对我有用!

© www.soinside.com 2019 - 2024. All rights reserved.