gpt4 book ai didi

generics - 如何在 rust 中使用通用数组 crate 初始化通用数组?

转载 作者:行者123 更新时间:2023-12-03 11:35:42 24 4
gpt4 key购买 nike

我使用generic-array条板箱:

struct Foo<N: ArrayLength<i32>> {
data: GenericArray<i32, N>
}

但这并没有说明如何初始化值:

impl<N: ArrayLength<i32>> Foo<N> {
pub fn new() -> Self {
Self {
data: // What to puts here?
}
}
}

游乐场 here可以帮助测试人员。

最佳答案

您可以随后对其进行默认初始化和变异:

let mut data = GenericArray::default();
for x in &mut data {
*x = 33;
}

或者,您可以使用 GenericArray::from_exact_iter函数。问题在于,似乎没有一种简单的方法来创建还实现 nExactSizeIterator元素的迭代器。您可以通过以下方式实现:
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,
}
}

并像 GenericArray::from_exact_iter(repeat_n(33, N::to_usize())).unwrap()一样使用它。

关于generics - 如何在 rust 中使用通用数组 crate 初始化通用数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61036329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com