On 24/01/14 15:32, benjamin adamson wrote:
Question, what constitutes whether a 'trait' is applicable for implementation by the #deriving() attribute?

According to the language specification on master:
http://static.rust-lang.org/doc/master/rust.html#deriving

There exists a static list. I found myself interested in the idea of using the deriving attribute to derive a simple drawable implementation:

https://github.com/JeremyLetang/rust-sfml/blob/master/src/rsfml/traits/drawable.rs

but then looked up the attribute in the rust manual, and noticed that there is a static list of what I will call 'traits that support the deriving attribute'. Why the restriction? Is there some prior reading on this? Is there any plan on letting libraries define more types that can be 'derivable'?


_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

There's a static list because they're currently hard-coded into the compiler.

With external syntax extensions, it's now possible to define something like `#[deriving_Drawable]`, and, iirc, I left the core deriving infrastructure public in syntax::ext::deriving::generic, so you can get most of the work done for you that way.


There are various things to be worked out for adding traits directly to #[deriving(Foo)], including (but not limited to) how namespacing works (e.g. if two libraries both define a trait with the same name and provide #[deriving] implementations for it), and whether we want it to be a priviledged syntax extension where users can directly add to its map between traits and deriving implementation.


Huon
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to