【问题标题】:for range on slice on array yields [T] instead of T?for range on slice on array 产生 [T] 而不是 T?
【发布时间】:2022-11-14 07:44:54
【问题描述】:

我想迭代一个切片的一部分,知道我想迭代该切片的多少项。 我怎样才能做到这一点?

我尝试的是在[0..only] 范围内有一个for of,但是用生成的索引对我的切片进行索引会给我一个[T] 而不是T。怎么来的?我错过了什么?

fn in_slice(slice: &[u8], only: usize) {
    for index in [0..only] {
        println!("{}", slice[index]); // slice[index] here is a [u8] and not a u8
    }
}

fn main() {
    in_slice(&[1, 2, 3], 2)
}

【问题讨论】:

  • [] 语法是额外的。通过这样做,您将 Range<usize> 包装在一个数组中。 -> for index in 0..only {

标签: rust


【解决方案1】:

0..onlyRange<usize>[0..only] 是一个[Range<usize>; 1],即元素类型为Range<usize>、长度为1 的数组。

因此,遍历[0..only] 将产生Range<usize> 类型的单个元素。

要遍历范围并产生usizes,请使用范围:

 for index in 0..only {
    println!("{}", slice[index]);
 }

【讨论】:

    猜你喜欢
    • 2014-09-26
    • 2016-06-02
    • 1970-01-01
    • 2022-12-02
    • 2022-12-01
    • 2013-01-01
    • 2020-09-12
    • 1970-01-01
    • 2021-07-18
    相关资源
    最近更新 更多