我有这样的结构
#[derive(CustomTrait)]
struct Sample {
v: Vec<u8>,
}
Run Code Online (Sandbox Code Playgroud)
我的特质是这样的
trait CustomTrait {...}
Run Code Online (Sandbox Code Playgroud)
我可以做上面的事吗?它给我带来了一个错误.
我想要类似于Clone特质的东西.这可能与Rust有关吗?
#[derive(Foo, Bar)]是糖#[derive_Foo] #[derive_Bar],因此有可能以同样的方式实现自己的decorator属性#[derive_Clone],但这需要你编写一个编译器插件,它不是Rust的稳定部分,并且在1.0中不稳定(因此在稳定和测试版频道中无法使用).
书中有关于此类事项的文档,但并不多; 你很大程度上依靠自己.
请记住,在那个阶段你实际可以做的事情是有限的; 您只能访问结构定义,并且对所提到的实际类型一无所知.这非常适合#[derive]构建支持的所有特征,但不适用于许多其他特征.
不,你不能.derive指示编译器提供特征的基本实现.您不能指望编译器神奇地知道如何实现用户定义的特征.
您只能使用derive这些特征(取自http://rustbyexample.com/trait/derive.html):
Eq,PartialEq,Ord,PartialOrdEncodable,DecodableClone,打造T从&T通过副本.Hash,从中计算哈希值&T.Rand,创建数据类型的随机实例.Default,创建数据类型的空实例.Zero,创建数值数据类型的零实例.FromPrimitive,从数字基元创建实例.Debug,使用{:?}格式化程序格式化值.注意:显然这是提出的,正在讨论这里
| 归档时间: |
|
| 查看次数: |
996 次 |
| 最近记录: |