एक सरणी वाली संरचना घोषित करने का अनुशंसित तरीका क्या है, और फिर शून्य-प्रारंभिक उदाहरण बनाएं?जंग में एक सरणी युक्त संरचना को कैसे प्रारंभ करें?
use std::default::Default;
use std::num;
#[deriving(Default)]
struct Histogram {
sum: u32,
bins: [u32, ..256],
}
और संकलक त्रुटि:
यहाँ struct है
src/lib.rs:17:5: 17:23 error: the trait `core::default::Default` is not implemented for the type `[u32, ..256]`
src/lib.rs:17 bins: [u32, ..256],
^~~~~~~~~~~~~~~~~~
note: in expansion of #[deriving]
src/lib.rs:14:1: 14:21 note: expansion site
src/lib.rs:17:5: 17:23 note: the trait `core::default::Default` must be implemented because it is required by `core::default::Default::default`
src/lib.rs:17 bins: [u32, ..256],
^~~~~~~~~~~~~~~~~~
note: in expansion of #[deriving]
src/lib.rs:14:1: 14:21 note: expansion site
error: aborting due to previous error
अगर मैं uint8 सरणी के लिए याद आ रही प्रारंभकर्ता जोड़ने का प्रयास:
impl Default for [u32,..256] {
fn default() -> [u32,..255]{
[0u8,..256]
}
}
मैं :
src/lib.rs:20:1: 24:2 error: cannot provide an extension implementation where both trait and type are not defined in this crate [E0117]
src/lib.rs:20 impl Default for [u32,..256] {
src/lib.rs:21 fn default() -> [u32,..255]{
src/lib.rs:22 [0u8,..256]
src/lib.rs:23 }
src/lib.rs:24 }
क्या मैं कुछ गलत कर रहा हूं, या क्या मैं मानक पुस्तकालय में 1.0 से सड़क पर संख्यात्मक प्रकार के लिए मंथन करके काट रहा हूं?
$ rustc --version
rustc 0.13.0-nightly
मुझे केवल डिफ़ॉल्ट पर मिला क्योंकि ज़ीरो को मानक पुस्तकालय में बहिष्कृत के रूप में लेबल किया गया है। ~ शून्य गुण की अनुपस्थिति में, मैं तर्क दूंगा कि निश्चित आकार के सरणी किसी और चीज की तुलना में वेक्टर-वेक्टर अतिरिक्त में उपयोग होने की अधिक संभावना है, और शून्य वेक्टर इसके लिए पहचान वेक्टर है और डिफ़ॉल्ट रूप से एक और प्राकृतिक विकल्प है । लेकिन यह कुछ गंभीर बाइकहेडिंग है जो हम यहां कर रहे हैं :) –