मैं एक समारोह जो पूर्णांकों का एक लिंक्ड सूची बनाने के लिए काम करता है लागू करने के लिए:जंग: लक्षण/typeclasses का उपयोग कर एक सामान्य संख्यात्मक समारोह
enum List<T> { Cons(T, ~List<T>), End }
fn range(start: int, end: int) -> ~List<int> {
if start >= end { ~End }
else { ~Cons(start, range(start+1, end)) }
}
हालांकि, मैं सहित किसी भी सांख्यिक प्रकार की एक सीमा बनाना चाहते यूंट्स, युगल और पसंद है। लेकिन इस उदाहरण के लिए, काम नहीं करता:
fn range<T: ord>(start: T, end: T) -> ~List<T> {
if start >= end { ~End }
else { ~Cons(start, range(start+1, end)) }
}
जो पैदा करता है:
> rustc list.rs
list.rs:3:12: 3:15 error: use of undeclared type name `ord`
list.rs:3 fn range<T: ord>(start: T, end: T) -> ~List<T> {
^~~
error: aborting due to previous error
मैं जंग में एक सामान्य समारोह है जो अपने आप को प्रतिबंधित करता है "सांख्यिक" प्रकार के द्वारा प्रतिदेय होने के लिए कैसे कर सकते हैं? इंटरफ़ेस को विशेष रूप से लिखने के बिना? मैंने माना था कि कई मानक-पुस्तकालय लक्षण थे (जैसे मैनुअल के सेक्शन 6.2.1.1 में सूचीबद्ध eq
, ord
, आदि, हालांकि अब मैं सोच रहा हूं कि वे उचित "लक्षण" हैं या नहीं) जेनेरिक कार्यों की घोषणा करते समय मैं उपयोग कर सकता था?
आपको संख्या जोड़ने के लिए आपको एक विशेषता की भी आवश्यकता होगी। जब तक मैंने इसे देखा नहीं, तब तक यह बदल गया है, मुझे लगता है कि आप न्यूम विशेषता चाहते हैं। आपको अपना 1 शाब्दिक सही प्रकार में प्राप्त करने के लिए से_इन से कॉल करने की भी आवश्यकता हो सकती है। –