Вдохновленный кодом, указанным evilone в сообщении How to print a Vec?. Чтобы отобразить матрицу, я написал код следующим образом:Несоответствующие типы при отображении матрицы с петлей для петли
use std::{ops, fmt};
#[derive(PartialEq, Debug)]
pub struct Matrix<T> {
data: Vec<T>,
row: usize,
col: usize,
}
impl<T: Copy> Matrix<T> {
pub fn new(row: usize, col: usize, values: &[T]) -> Matrix<T> {
Matrix {
data: values.to_vec(),
row: row,
col: col,
}
}
}
//// Display
impl<T: fmt::Display> fmt::Display for Matrix<T> {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let n_row = self.row;
let n_col = self.col;
let data = self.data;
for i in 0.. n_row {
let mut each_row = String::new();
for j in 0.. n_col {
let idx = i * n_col + j;
let each_element = data[idx];
each_row.push_str(&each_element.to_string());
each_row.push_str(" "); // seperated by space
}
write!(f, "{}", each_row)
}
}
}
fn main() {
let x = Matrix::new(2, 3, &[-6, -5, 0, 1, 2, 3]);
println!("{}", x);
}
Я получил ошибку:
rustc 1.13.0 (2c6933acc 2016-11-07)
error[E0308]: mismatched types
--> <anon>:40:13
|
40 | write!(f, "{}", each_row)
| ^^^^^^^^^^^^^^^^^^^^^^^^^ expected(), found enum `std::result::Result`
|
= note: expected type `()`
= note: found type `std::result::Result<(), std::fmt::Error>`
= note: this error originates in a macro outside of the current crate
error[E0308]: mismatched types
--> <anon>:31:9
|
31 | for i in 0.. n_row {
| ^expected enum `std::result::Result`, found()
|
= note: expected type `std::result::Result<(), std::fmt::Error>`
= note: found type `()`
1) Я не понимаю, почему я получаю expected(), found enum `std::result::Result`
2) Для второго ошибка, я думал, что это было вызвано неспособностью реализовать строку 40. Так что если строка исправления 40, это больше не будет проблемой.
Любые предложения по исправлению этого вопроса?
Большое спасибо за руководство, чтобы увидеть суть. Я полностью согласен, что я должен научиться глубоко заглядывать в отчеты об ошибках и делать дело MCVE.В эти дни я борется и многому учусь в Rust. – enaJ
@enaJ угнаться тяжелую работу! Создание сокращенного случая, повторяющего ошибку, - это то, что поможет вам на протяжении всей карьеры программирования. – Shepmaster
Определенно! Я пришел с фона python и начал изучать Rust 6 недель назад. Они во многом отличаются друг от друга. Но я считаю, что каждый язык помогает глубже и глубже других. – enaJ