如何实现一个自定义的“fmt :: Debug”特性?

我认为你做这样的事情:

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:: in fmt::Result 。 没有那个你指的是简单的Resulttypes。 普通的Resulttypes有两个genericstypes参数, fmt::Result没有。