पर संबंधित विशेषता पर एक विशेषता की आवश्यकता है मेरे पास Foo
एक विशेषता है जो Bar
से विरासत में है। Bar
में एक संबंधित प्रकार Baz
है। Foo
बाधा Baz
जैसे Baz
को Hoge
लागू करना होगा।विरासत विशेषता के संबंधित प्रकार
trait Hoge {}
trait Bar {
type Baz;
}
trait Foo: Bar where Self::Baz: Hoge {}
हालांकि, जब मैं एक सामान्य समारोह Foo
लागू करने के लिए सामान्य प्रकार T
की आवश्यकता होती है, को परिभाषित
// [DESIRED CODE]
fn fizz<T: Foo>(buzz: T) {
// ...
}
rustc
EO277
साथ शिकायत जब तक कि मैं T
स्पष्ट रूप से विवश:
fn fizz<T: Foo>(buzz: T) where T::Baz: Hoge {
// ...
}
मैं करता हूँ समझ में नहीं आता क्यों मुझे ऐसा करने की ज़रूरत है। मैं [DESIRED CODE]
लिखने में सक्षम होना चाहता हूं। ऐसा करने का अनुशंसित तरीका क्या है?
क्या आपको पता है कि 'विशेषता फू कहां है ...' अवधारणात्मक रूप से मान्य है? मैं देखता हूं कि यह * संकलित * है, इसलिए वाक्यविन्यास ठीक है, लेकिन ऐसा लगता है ... अजीब। – Shepmaster
आप कल्पना कर सकते हैं कि मुझे संबंधित प्रकार ('बाज़') के कुछ व्यवहार की आवश्यकता है ताकि जब मैं कुछ कार्यान्वयन में 'फू' का उपयोग करता हूं, तो मैं उस व्यवहार का उपयोग कर सकता हूं, इस तरह कि कोई विरासत विशेषता के कुछ व्यवहार की आवश्यकता कैसे हो सकता है ('Bar')। – Tsukki
क्षमा करें, मैं अस्पष्ट था।आपका * इरादा * काफी समझा जा सकता है (क्योंकि यह 'होगे' जैसे मेटासिंक्टैक्टिक वेरिएबल्स के साथ हो सकता है), मैं ज्यादातर पूछ रहा हूं कि क्या आपने कभी एक सामान्य परिभाषा के दौरान एक विशेषता परिभाषा के लिए 'कहां' खंड देखा है; मुझे यकीन नहीं है कि मेरे पास है। – Shepmaster