[Rust笔记] format! 宏使用心得-汇总

本文是作者在使用Rust开发命令行工具时,对`format!`宏的深入学习和总结。文章详细介绍了`format!`宏的依赖关系、调用格式、格式化选项,包括顺序访问、索引、具名引用,以及宽度定制、对齐方式等,并通过例程展示了各种用法。此外,还讨论了自定义数据类型如何响应格式化指令,以及`Display`与`Debug`的区别。
摘要由CSDN通过智能技术生成

假期,我尝试使用rust做一款命令行工具,来磨砺自己的rust技术熟练度。起初,面对各式各样的字符串格式化功能点,我傻乎乎地尝试自己造轮子。但,实在是遇到了太多技术难点(可难死我了)。后来,通过在论坛发贴请教,我才了解到【标准库 - format!语法扩展】已经90%地满足了我的需求。至于,剩余10%的功能,可通过实现不同的format trait来深度定制-达成。

于是,我修改了假期目标为:

  • 重新复习format!宏相关知识点。相比于之前(真是学过N遍了),我要提高对这块知识点的重视程度。在复习过程,做些归纳总结和条理清晰的笔记。

  • 基于【标准库 - format!语法扩展】与【实现format trait深度定制】的手段,来做一款rust命令行工具。而不是,自己重新造轮子。

下面即是我对第一个目标的达成成果(除了丰富的教条总结归纳,还有30个例程) --- 掌握rust,先做“教条侠”。第二个目标还在进行中...

依赖关系宏观架构图

318c1d218cdb13dd297d9048d0de3782.png

宏调用格式

format!("以{parameter}为占位符的·格式化字符串·字面量", arguments...)

  • {parameter}名曰Formatting Argument

  • argument名曰Value Argument

Formatting Argument格式

下文中的[...]结构表示

  • 一对[]之间的内容是可有可无的。

  • 而且[...]结构是可多层嵌套的。

{[argument][:format-spec]}

  • argument:【引用指令】表示如何找到Value Argument

  • format-spec:【格式化指令】表示如何格式化Value Argument为字符串。

Formatting argument -> argument以如下三种形式引用Value Argument

  • {} 名曰:Next (Value) Argument

    • 【顺序访问】不会受【随机访问】·跳跃式寻找Value Arguments的影响,因为前者维护了独立的【游标变量】来跟踪迭代位置。[例程1]

    • 顺序访问(Value) Argument,逐一遍历arguments列表中的每一项。但是,当format-spec内包含.*时,则会一次迭代遍历两项(下文有详细描述)。

    • Value Argument:无要求

  • {positional parameter} 名曰:【索引】(Value) Argument

    • positional parameterinteger值。

    • 以始于0的索引值,随机访问(Value) Argument

    • Value Argument:无要求

  • {naming parameter} 名曰:【具名】(Value) Argument [例程2]

    • 要么,出现于Value Arguments列表的末端;格式:<parameter name>=<value>

    • 要么,不出现在Value Arguments列表中。相反,编译器会

    • 在当前作用域内,

    • 寻找同名绑定变量,

    • 使用该绑定变量的值。(馁馁地逆天了)

    • naming parameteridentifier字符串。

    • 经由【参数名】,随机访问(Value) Argument

    • Value Argument:

Formatting argument -> forma

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值