投稿でeviloneが提供しているコードに触発されたHow to print a Vec?。マトリックスを表示するには、私は次のようなコードを書いた:forループを使用して行列を表示するときに、タイプが一致しない
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のケースを作る方法を学ぶべきだということに全く同意します。私はこれらの日に闘争していて、ラストで多くのことを学んでいます。 – enaJ
@enaJは頑張ってください!エラーを繰り返すケースを減らすことは、プログラミングのキャリア全体に役立つものです。 – Shepmaster
間違いなく!私はPythonの背景から来て、6週間前にRustを学び始めました。彼らは多くの面でかなり異なっています。しかし、私は各言語が他の言語のより深い/より深いところを見るのに役立つと感じています。 – enaJ