Rust格式化输出的奇淫小技巧

眉间皱痕 提交于 2020-08-04 21:14:57

写rust样例时想打印个醒目的标题,类似

/// ==============
///   顶顶顶顶
/// ==============

最开始用的时宏

macro_rules! title1x {
    ($msg:expr) => {
        println!("///=========================///");
        println!("///                         ///");
        println!("///    {s1}", s1 = $msg);
        println!("///                         ///");
        println!("///=========================///");
    };
}

还不错,不过格式不是很美观。尤其时字符长短问题

后发现 官方样例有这样的代码

// 你可以在数字左边补 0。下面语句输出 "000001"。
println!("{number:>0width$}", number=1, width=6);

多半可以拿来利用一下

经过反复各种乱试!发现了一点有用的东西

macro_rules! titlex {
    ($msg:expr) => {
        // 解释
        // :后面跟要填充字符,再跟填充方向标识[>^<],>从左侧填充,<从右侧填充,^两边填充
        // 中文占2个字符宽度,所以会导致填充超标,超长度。
        // 含义  {s1:/^w1$} s1格式化输出,两边填充字符/,填充满w1长度
        println!("{s1:/^w1$}{s2:^w2$}", s1 = "/", w1 = 3, s2 = $msg, w2 = 80);

        println!(
            "{s1:/>w1$}{s2:=^w2$}{s1:+<w1$}",
            s1 = "/",
            w1 = 3,
            s2 = "=",
            w2 = 80
        );
//这段输出“///================================================================================/++”
//{s1:+<w1$}后面用+号从右侧向左侧填充
    };
}

此技巧 貌似官方都没怎么描述过(也可能时我英语太差没看到)。

记录一下,日后可以装逼臭屁!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!