私はあなたがこのようなことをしていると思います:
extern crate uuid;
use uuid::Uuid;
use std::fmt::Formatter;
use std::fmt::Debug;
#[derive(Debug)]
struct BlahLF {
id: Uuid,
}
impl BlahLF {
fn new() -> BlahLF {
return BlahLF { id: Uuid::new_v4() };
}
}
impl Debug for BlahLF {
fn fmt(&self, &mut f: Formatter) -> Result {
write!(f.buf, "Hi: {}", self.id);
}
}
...しかし、この特性を実装しようとすると、以下が生成されます。
error[E0243]: wrong number of type arguments
--> src/main.rs:19:41
|
19 | fn fmt(&self, &mut f: Formatter) -> Result {
| ^^^^^^ expected 2 type arguments, found 0
ただし、それは他の実装がそれを行う方法のようです。何が悪いのですか?
std::fmt
docs の例によると:
extern crate uuid;
use uuid::Uuid;
use std::fmt;
struct BlahLF {
id: Uuid,
}
impl fmt::Debug for BlahLF {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "Hi: {}", self.id)
}
}
強調する部分は、fmt::
のfmt::Result
です。それがなければ、プレーンな Result
タイプを参照しています。単純なResult
タイプには2つのジェネリック型パラメーターがあります。fmt::Result
にはありません。