推荐的方法是声明一个包含数组的结构,然后创建一个零初始化的实例?如何在Rust中初始化一个包含数组的结构?
这里的结构:
use std::default::Default;
use std::num;
#[deriving(Default)]
struct Histogram {
sum: u32,
bins: [u32, ..256],
}
和编译器错误:
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
我只有在默认情况下,因为零标记为标准库中已弃用。在没有〜零特征的情况下,我认为固定大小的数组比其他任何数据更有可能用于矢量 - 矢量加法,并且零矢量是用于加法的恒等向量,并且是默认的更自然的选择。但是,这是一些严重的自行车,我们在这里:) – 2014-11-21 18:10:42