例如我有以下通用结构:
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
。请帮助我。
感谢@cafce25,他的评论:
impl<T> From<Rect<T>> for Size<T> {
实际上对我有用!