2015-01-24 4 views
7

कोड:क्या एक अप्रयुक्त प्रकार पैरामीटर के आसपास काम करने का कोई तरीका है?

trait Trait<T> {} 

struct Struct<U>; 

impl<T, U: Trait<T>> Struct<U> {} 

त्रुटि:

error[E0207]: the type parameter `T` is not constrained by the impl trait, self type, or predicates 
--> src/main.rs:5:6 
    | 
5 | impl<T, U: Trait<T>> Struct<U> {} 
    | ^unconstrained type parameter 

ऐसा लगता है कि RFC 447 इस पैटर्न पर प्रतिबंध लगाता है; क्या इस के आसपास काम करने का कोई तरीका है? मुझे लगता है कि इसे T को किसी संबंधित प्रकार में बदलकर हल किया जा सकता है, लेकिन यह मुझे multidispatch करने से रोक देगा।

उत्तर

7

एक प्रकार पैरामीटर कि struct में अप्रयुक्त है PhantomData उपयोग कर सकते हैं:

struct Struct<U> { 
    _marker: PhantomData<U>, 
} 

impl<U> Struct<U> { 
    fn example<T>(&self) 
    where 
     U: Trait<T>, 
    { 
     // use `T` and `U` 
    } 
} 
+0

वाह, मैं यह पहले से ही उपयोग करना संभव है नहीं पता था कि जहां तरीकों पर खंड। जंग वास्तव में एक अद्भुत भाषा है। –

संबंधित मुद्दे

 संबंधित मुद्दे