如何实现一个自定义的“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
。 没有那个你指的是简单的Result
types。 普通的Result
types有两个genericstypes参数, fmt::Result
没有。