// 定义泛型结构体Point
struct Point<T> {
x: T,
y: T,
}
// 为Point<T>定义关联函数,返回默认值的Point<T>
impl<T> Point<T> {
fn default_point() -> Point<T>
where
T: Default,
{
Point {
x: T::default(),
y: T::default(),
}
}
}
// 定义Drawable trait
trait Drawable {
fn draw(&self);
}
// 为Point<T>实现Drawable trait
impl<T: std::fmt::Debug> Drawable for Point<T> {
fn draw(&self) {
println!("Point: ({:?}, {:?})", self.x, self.y);
}
}
fn main() {
let default_i32 = Point::<i32>::default_point();
default_i32.draw();
let default_f64 = Point::<f64>::default_point();
default_f64.draw();
}