Rust?语言println!?宏的格式占位符详解

 更新时间:2024年03月11日 10:52:01   作者:许野平  
这篇文章主要介绍了Rust语言的println!宏的格式占位符,这只是格式说明符的一部分清单,Rust?的格式化系统非常灵活和强大,支持更多的选项和组合,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

一、占位符

println! 宏的占位符主要基于 Rust 的格式化语法,它支持多种占位符格式来插入和格式化不同的值。除了 {}{:?} 之外,还有其他几种形式:

  • 基本占位符 {}:用于插入任何实现了 Display trait 的类型的值。
  • 调试占位符 {:?}:用于插入任何实现了 Debug trait 的类型的值,通常用于调试目的,因为它会提供更详细的输出。
  • 格式说明符 {:fmt}:其中 fmt 是格式字符串,允许你更详细地控制值的输出。例如,你可以控制整数的基数({:x} 表示十六进制),浮点数的精度({:.2f} 表示两位小数),字符串的宽度和对齐方式等。
let num = 255;
println!("Hex: {:x}", num); // 输出: Hex: ff

4,命名参数 {name}:在复杂的格式化字符串中,你可以给占位符命名,并在后面通过 format! 宏的参数列表提供值。

let name = "Alice";
let age = 30;
println!("Name: {name}, Age: {age}", name=name, age=age);
// 输出: Name: Alice, Age: 30

5.位置参数 {0}{1} 等:你也可以通过位置来引用 format! 宏参数列表中的值。位置从 0 开始。

let name = "Alice";
let age = 30;
println!("Name: {0}, Age: {1}", name, age);
// 输出: Name: Alice, Age: 30

6.宽度、精度和填充:你可以在格式说明符中指定字段的宽度、精度和填充字符。

let num = 123;
println!("Number: {:>10}", num); // 输出: Number:      123 (右对齐,总宽度为10)
println!("Number: {:<10}", num); // 输出: Number: 123      (左对齐,总宽度为10)
println!("Number: {:^10}", num); // 输出: Number:   123   (居中对齐,总宽度为10)
println!("Number: {:0>10}", num); // 输出: Number: 0000000123 (右对齐,用0填充至总宽度10)

7.二进制、八进制、十进制和十六进制:你可以使用不同的格式说明符来以不同的基数显示整数。

let num = 255;
println!("Dec: {:d}", num); // 输出: Dec: 255 (十进制)
println!("Hex: {:x}", num); // 输出: Hex: ff  (十六进制)
println!("Bin: {:b}", num); // 输出: Bin: 11111111 (二进制)
println!("Oct: {:o}", num); // 输出: Oct: 3ff  (八进制)

这些格式说明符可以组合使用,以提供几乎无限的格式化选项。如果你需要更复杂的格式化,还可以查阅 Rust 的官方文档来了解更多细节和可用的格式化选项。

二、关于 fmt 占位符

在 Rust 的格式化字符串中,{:fmt} 是一个占位符,其中 fmt 表示具体的格式说明符。这些格式说明符用于控制如何显示不同类型的数据。以下是一些常用的格式说明符的详细清单:

整数类型

  • {:d} 或 {}:十进制表示。
  • {:x} 或 {:X}:十六进制表示,小写 x 为小写字母,大写 X 为大写字母。
  • {:o}:八进制表示。
  • {:b}:二进制表示。
  • {:#b}、{:#o}、{:#x}、{:#X}:带有前缀的二进制、八进制、十六进制表示(例如 0b1010、0o123)。
  • {:0width}:用零填充到指定的宽度。

浮点数类型

  • {:f}:默认的小数表示。
  • {:.precision} 或 {:f.precision}:指定小数点后的精度。
  • {:e}:科学计数法表示。
  • {:E}:科学计数法表示,使用大写 E。
  • {:g} 或 {:G}:根据数值大小自动选择 f 或 e/E 表示法。
  • {:a} 或 {:A}:十六进制浮点数表示。

字符串和字符类型

  • {:s}:字符串表示。
  • {:c}:字符表示。
  • {:width}:指定最小字段宽度。
  • {:>width}、{:<width}、{:^width}:指定宽度和对齐方式(右对齐、左对齐、居中对齐)。
  • {:.width}:截断到指定宽度。
  • {:-}:左对齐,且不使用空格填充。
  • {:+}:对于数值类型,总是在正数前面显示加号。
  • {: }(包含一个空格):在正数前面添加空格。

其他

  • {:?}:调试格式,通常用于显示枚举和复合类型的内部表示。
  • {:p}:指针的地址表示。
  • {:#}:对于某些类型(如浮点数),使用替代格式。
  • {:width$}:位置参数,用于指定宽度等属性的值。

组合使用

格式说明符可以组合使用,例如 {:010.2f} 会将浮点数格式化为宽度至少为10(不足部分用0填充),且小数点后有两位的字符串。

这只是格式说明符的一部分清单,Rust 的格式化系统非常灵活和强大,支持更多的选项和组合。要获取完整的格式说明符清单和更详细的信息,建议查阅 Rust 的官方文档或相关资源。

到此这篇关于Rust 语言的 println! 宏的格式占位符的文章就介绍到这了,更多相关Rust println! 宏的格式占位符内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • 深入了解Rust中泛型的使用

    深入了解Rust中泛型的使用

    所有的编程语言都致力于将重复的任务简单化,并为此提供各种各样的工具。在?Rust?中,泛型(generics)就是这样一种工具,本文就来聊聊Rust中泛型的使用,需要的可以参考一下
    2022-11-11
  • 一文弄懂rust生命周期

    一文弄懂rust生命周期

    生命周期是Rust语言中的一个概念,用于决内存安全问题,本文主要介绍了一文弄懂rust生命周期,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Rust中的Copy和Clone对比分析

    Rust中的Copy和Clone对比分析

    这篇文章主要介绍了Rust中的Copy和Clone及区别对比分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 2022最新Rust变量与数据类型讲解

    2022最新Rust变量与数据类型讲解

    rust 是强类型语言所有变量、常量都必须有明确的数据类型,这篇文章主要介绍了Rust变量与数据类型,需要的朋友可以参考下
    2022-11-11
  • Rust 函数详解

    Rust 函数详解

    函数在 Rust 语言中是普遍存在的。Rust 支持多种编程范式,但更偏向于函数式,函数在 Rust 中是“一等公民”,函数可以作为数据在程序中进行传递,对Rust 函数相关知识感兴趣的朋友一起看看吧
    2021-11-11
  • 如何使用Rust写个猜数字游戏

    如何使用Rust写个猜数字游戏

    这篇文章主要介绍了Rust写个猜数字游戏,本项目通过动手实践,介绍了Rust新概念:let、match、函数、使用外部 crate 等,接下来的文章,你会继续深入学习这些概念,并且介绍大部分编程语言都有的概念,如变量、数据类型和函数,以及如何在 Rust 中使用它们,需要的朋友可以参考下
    2023-12-12
  • Rust Option类型基本使用详解

    Rust Option类型基本使用详解

    Rust的Option是一种强大的类型,用于处理可能为空的情况,避免了许多空值引起的运行时错误,本文介绍Rust Option类型详解,感兴趣的朋友一起看看吧
    2024-02-02
  • Rust个人学习小结之Rust的循环

    Rust个人学习小结之Rust的循环

    这篇文章主要介绍了Rust个人学习小结之Rust的循环,今天主要了解了Rust语言的3种循环方法:?loop、while、for,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • Rust for循环语法糖背后的API场景分析

    Rust for循环语法糖背后的API场景分析

    for语句是一种能确定循环次数的循环,for 语句用于执行代码块指定的次数,今天通过本文给大家介绍Rust for循环语法糖背后的API场景分析,感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • Rust中的Iterator和IntoIterator介绍及应用小结

    Rust中的Iterator和IntoIterator介绍及应用小结

    Iterator即迭代器,它可以用于对数据结构进行迭代,被迭代的数据结构是可迭代的(iterable),所谓的可迭代就是这个数据结构有返回迭代器的方法,这篇文章主要介绍了Rust中的Iterator和IntoIterator介绍及应用,需要的朋友可以参考下
    2023-07-07

最新评论

?


http://www.vxiaotou.com