Is it possible to add your own derivable traits, o

2019-01-15 09:29发布

问题:

The derive attribute allows certain traits to be automatically implemented for data structures. The reference gives the example:

#[derive(PartialEq, Clone)]
struct Foo<T> {
   a: i32,
   b: T
}

Is it possible to add your own derivable traits, or are these fixed by the compiler?

回答1:

A small number of derivable traits are hard-coded in the compiler.

Rust 1.15 stabilized procedural macros which allow for the creation of custom derive attributes. If you need to support stable versions of Rust before 1.15, there is a crate that uses macro hackery to derive custom traits.



回答2:

The release of Rust 1.15 allows custom traits to be derived. They easiest way to do this is by using the syn and quote crates.



标签: rust