现在有一个需求,有如下结构体
pub struct Vec2<T>{
x:T,
y:T,
}
在实现结构体方法时使用genericity_select
宏修饰impl块,使i该impl
块内T
可以使用所有u8、u16共同的方法
#[genericity_select]
impl<T=u8|u16> Vec2<T> {
// 在这个作用域内 T 能够使用所有u8、u6共同的方法
pub const fn new(x:T,y:T)->Self{
Self { x, y}
}
pub const fn distance(&self)->T{
self.x*self.x + self.y*self.y
}
}
以上写法等同于转化为以下实现
impl Vec2<u8> {
// 在这个作用域内使用所有u8、u16共同的方法
pub const fn new(x:u8,y:u8)->Self{
Self { x, y}
}
pub const fn distance(&self)->u8{
self.x*self.x + self.y*self.y
}
}
impl Vec2<u16> {
// 在这个作用域内使用所有u8、u16共同的方法
pub const fn new(x:u16,y:u16)->Self{
Self { x, y}
}
pub const fn distance(&self)->u16{
self.x*self.x + self.y*self.y
}
}
求教现在是否有这样的宏?
1
共 3 条评论, 1 页
评论区
写评论我自己实现了一个,大家可以看看,支持多个可选择选型参函数,使用如下
过程宏代码如下
非常感谢解答,但还是想要这样一种宏实现更通用的方法
简单写个声明宏就行了