RUST结构体的Display输出

use std::fmt; // 导入 `fmt` 模块。

// 定义一个包含单个 `Vec` 的结构体 `List`。

struct List(Vec<i32>);
//我们定义了一个List结构体,然后有一个名字叫fmt::Display的特性,
// 我们的list 拥有了这个特性,然后并且实例化了他。
// fn fmt(&self, f: &mut Formatter<'_>) -> Result ;
// 这就是这个特性的抽象方法,&self就是当前对象自己,java中的this
// 第二个参数名字是f。它是一个可变引用,类型是Formatter
// 我们试用write宏吧想要的输出写入到f里面去,
// ?表示遇到错误直接return,这算是一个语法糖==java中的return ,


impl fmt::Display for List {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        // 使用元组的下标获取值,并创建一个 `vec` 的引用。
        let vec = &self.0;
        write!(f, "[")?;
        // 使用 `v` 对 `vec` 进行迭代,并用 `count` 记录迭代次数。
        for (count, v) in vec.iter().enumerate() {
            // 对每个元素(第一个元素除外)加上逗号。
            // 使用 `?` 或 `try!` 来返回错误。
            if count != 0 {
                write!(f, ", ")?;
            }
            write!(f, "{}: {}", count,v)?;
        }
        // 加上配对中括号,并返回一个 fmt::Result 值。
        write!(f, "]")
    }
}

fn main() {
    let v = List(vec![1, 2, 3]);
    println!("{}", v);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值