Как распечатать индекс и значение для каждого элемента в Vec? - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь завершить действие в нижней части этой страницы , где мне нужно распечатать индекс каждого элемента, а также значение.Я начинаю с кода

use std::fmt; // Import the `fmt` module.

// Define a structure named `List` containing a `Vec`.
struct List(Vec<i32>);

impl fmt::Display for List {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        // Extract the value using tuple indexing
        // and create a reference to `vec`.
        let vec = &self.0;

        write!(f, "[")?;

        // Iterate over `vec` in `v` while enumerating the iteration
        // count in `count`.
        for (count, v) in vec.iter().enumerate() {
            // For every element except the first, add a comma.
            // Use the ? operator, or try!, to return on errors.
            if count != 0 { write!(f, ", ")?; }
            write!(f, "{}", v)?;
        }

        // Close the opened bracket and return a fmt::Result value
        write!(f, "]")
    }
}

fn main() {
    let v = List(vec![1, 2, 3]);
    println!("{}", v);
}

Я новичок в программировании и изучаю Rust, пробираясь через документы Rust и Rust by Example.Я полностью застрял в этом.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

В книге вы можете увидеть эту строку:

for (count, v) in vec.iter().enumerate()

Если вы посмотрите на документацию, вы увидите множество полезных функций для Iterator и enumerateОписание состояния:

Создает итератор, который дает текущий счетчик итерации, а также следующее значение.

Возвращенный итератор дает пары (i, val), где i - текущийиндекс итерации и val - это значение, возвращаемое итератором.

enumerate() сохраняет свой счет как usize.Если вы хотите сосчитать по целому разному размеру, функция zip обеспечивает аналогичную функциональность.

При этом у вас есть индекс каждого элемента в вашем векторе.Простой способ сделать то, что вы хотите, это использовать count:

write!(f, "{}: {}", count, v)?;
0 голосов
/ 21 февраля 2019

Это простой пример для печати индекса и значения вектора:

fn main() {
    let vec1 = vec![1, 2, 3, 4, 5];

    println!("length is {}", vec1.len());
    for x in 0..vec1.len() {
        println!("{} {}", x, vec1[x]);
    }
}

Вывод этой программы -

length is 5
0 1
1 2
2 3
3 4
4 5
...