写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$}后面用+号从右侧向左侧填充
};
}
此技巧 貌似官方都没怎么描述过(也可能时我英语太差没看到)。
记录一下,日后可以装逼臭屁!
来源:oschina
链接:https://my.oschina.net/raddleoj/blog/4308943