Rust 是否有任何方法可以简化使用未使用泛型参数的结构的派生?

Rust 是否有任何方法可以简化使用未使用泛型参数的结构的派生?,rust,Rust,我正在尝试向某些结构添加一些类型安全性,以确保正确使用。例如,ID绑定到它标识的实体的类型 发布特性标记{ } #[派生(复制、克隆、PartialEq、Eq)] pub结构A; {}的impl标记性 #[派生(复制、克隆、PartialEq、Eq)] pub结构B; B{}的impl标记性 使用std::marker::PhantomData; #[派生(复制、克隆、PartialEq、Eq)] 发布结构ID 其中T:MarkerEntity{ 值:u64, 实体类型:PhantomData,

我正在尝试向某些结构添加一些类型安全性,以确保正确使用。例如,ID绑定到它标识的实体的类型

发布特性标记{
}
#[派生(复制、克隆、PartialEq、Eq)]
pub结构A;
{}的impl标记性
#[派生(复制、克隆、PartialEq、Eq)]
pub结构B;
B{}的impl标记性
使用std::marker::PhantomData;
#[派生(复制、克隆、PartialEq、Eq)]
发布结构ID
其中T:MarkerEntity{
值:u64,
实体类型:PhantomData,
}
植入ID
其中T:MarkerEntity{
发布fn新(值:u64)->Self{
Self{value,实体类型:PhantomData}
}
}
要使用这种模式,我需要在标记结构上派生出我需要的所有内容,以通过进一步的
派生
s(或使用板条箱)的边界检查。 有没有办法简化我在当前版本的Rust中想要的内容?
我想const泛型会让它变得更容易,但是,顺便说一句,它们不会很快落地。

我认为没有更好的方法来做你想做的事情。您可以利用宏来减少一些样板文件。如果有很多标记结构,那么至少只需在一个位置为所有标记定义派生

trait MarkerEntity{}
宏规则!标记实体{
($Name:ident)=>{
#[派生(复制、克隆、PartialEq、Eq)]
pub struct$Name;
$Name{}的impl MarkerEntity
}
}
标记实体!(A) );
标记实体!(B) );

很好,谢谢。我没有想过滚动一个helper宏。我没有很多,但是把所有的派生都放在一个地方还是会有帮助的。