Debugging 使用Formatter::debug_list实现二维数组的调试

Debugging 使用Formatter::debug_list实现二维数组的调试,debugging,multidimensional-array,rust,traits,Debugging,Multidimensional Array,Rust,Traits,我想知道是否有可能编译这个 impl<T: fmt::Debug> fmt::Debug for Array2<T> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let ref mut builder = f.debug_list(); self.rows().fold(builder, |b, e| b.entry(e)).finish()

我想知道是否有可能编译这个

impl<T: fmt::Debug> fmt::Debug for Array2<T> {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        let ref mut builder = f.debug_list();
        self.rows().fold(builder, |b, e| b.entry(e)).finish()
    }
}
注意
&调试

然而,相关的文档示例将引用
&i32
传递给构建器

struct Foo(Vec<i32>);

impl fmt::Debug for Foo {
    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
        self.0.iter().fold(fmt.debug_list(), |b, e| b.entry(e)).finish()
    }
}
entry()
的定义如下:

pub fn entry(&mut self, entry: &fmt::Debug) -> &mut DebugList<'a, 'b>;

看起来我的锈有点生锈了。我的印象是&特质只能通过明确的演员阵容来构建。
use std::fmt;

fn fmt<T: fmt::Debug>(vec: &Vec<T>, f: &mut fmt::Formatter) -> fmt::Result {
    let ref mut builder = f.debug_list();
    vec.chunks(4).fold(builder, |b, e| b.entry(e)).finish()
}
pub fn entry(&mut self, entry: &fmt::Debug) -> &mut DebugList<'a, 'b>;
impl<T: fmt::Debug> fmt::Debug for Array2<T> {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        self.rows().fold(&mut f.debug_list(), |b, e| b.entry(&e)).finish()
    }
}