2014-11-17 5 views
15

Esiste un modo per combinare più tratti (per ereditarietà?) Per definire un nuovo tratto? Sto cercando qualcosa di simile concetti in C++:C'è un modo per combinare più tratti per definire un nuovo tratto?

auto concept newConcept<typename T> : concept1<T>, concept2<T>, concept3<T> {}; 

Supponiamo che io voglio fare un nuovo tratto che eredita da Clone, Default e di alcuni altri tratti, è possibile?

risposta

30

Sì!

trait NewTrait: Clone + Default + OtherTraits {} 
impl<T> NewTrait for T where T: Clone + Default + OtherTraits {} 
+0

Grazie (ho provato con le virgole ... ma non ha funzionato). Ho cercato questo a lungo, peccato che non sia nella guida. – BigEpsilon

+0

E 'citato nel riferimento, però: http://doc.rust-lang.org/reference.html#traits Sì, sono intervenuto anche su questo :) –

+1

Puoi scrivere una macro trait_alias come descritto in http: //stackoverflow.com/questions/30291584/macro-for-defining-trait-aliases – malbarbo

Problemi correlati