Generics 如何使用rust中的通用阵列板条箱初始化通用阵列?

Generics 如何使用rust中的通用阵列板条箱初始化通用阵列?,generics,rust,rust-crates,Generics,Rust,Rust Crates,我使用板条箱: structfoo{ 数据:通用阵列 } 但它没有解释如何初始化值: impl-Foo{ pub fn new()->Self{ 自我{ data://在这里放什么? } } } 操场帮助测试人员。您可以默认初始化并在之后对其进行更改: let mut data = GenericArray::default(); for x in &mut data { *x = 33; } 或者您可以使用GenericArray::from\u exact\u iter

我使用板条箱:

structfoo{
数据:通用阵列
}
但它没有解释如何初始化值:

impl-Foo{
pub fn new()->Self{
自我{
data://在这里放什么?
}
}
}

操场帮助测试人员。

您可以默认初始化并在之后对其进行更改:

let mut data = GenericArray::default();
for x in &mut data {
    *x = 33;
}
或者您可以使用
GenericArray::from\u exact\u iter
函数。问题在于,似乎没有一种简单的方法来创建
n
元素的迭代器,该迭代器也实现了
ExactSizeIterator
。不过,您可以实现一个:

struct RepeatN<T>{
    item: T,
    count: usize,
}

impl<T: Clone> Iterator for RepeatN<T> {
    type Item = T;

    fn next(&mut self) -> Option<T> {
        self.count.checked_sub(1).map(|count| {
            self.count = count;
            self.item.clone()
        })
    }

    fn size_hint(&self) -> (usize, Option<usize>) {
        (self.count, Some(self.count))
    }
}

impl<T: Clone> ExactSizeIterator for RepeatN<T> {
    fn len(&self) -> usize {
        self.count
    }
}

fn repeat_n<T: Clone>(item: T, count: usize) -> RepeatN<T> {
    RepeatN {
        item,
        count,
    }
}
struct RepeatN{
项目:T,
计数:使用,
}
RepeatN的impl迭代器{
类型项=T;
fn下一步(&mut self)->选项{
self.count.checked_sub(1).map(| count |{
self.count=计数;
self.item.clone()
})
}
fn大小提示(&self)->(使用,选项){
(self.count,Some(self.count))
}
}
RepeatN的impl ExactSizeIterator{
fn len(&self)->使用{
自我计数
}
}
fn重复\u n(项目:T,计数:usize)->重复{
重复{
项目,,
计数
}
}

然后像
GenericArray::from_-exact_-iter(重复[n(33,n::to_-usize()))一样使用它。unwrap()

您想将它初始化为什么?默认值?特定数组?例如类似于
[33;N]