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

一、占位符

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

  1. 基本占位符 {}:用于插入任何实现了 Display trait 的类型的值。

  2. 调试占位符 {:?}:用于插入任何实现了 Debug trait 的类型的值,通常用于调试目的,因为它会提供更详细的输出。

  3. 格式说明符 {: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}:带有前缀的二进制、八进制、十六进制表示(例如 0b10100o123)。
  • {:0width}:用零填充到指定的宽度。

浮点数类型

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

字符串和字符类型

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

其他

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

组合使用

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/736420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PaddlePaddle框架安装

提示&#xff1a;可在python环境中进行安装&#xff0c;避免环境污染&#xff0c;创建命令conda create -n xxx_name python3.9,激活conda activate xxx_name 第一步&#xff1a;查看计算机平台版本 在窗口输入查看命令&#xff0c;查看CUDA的版本 nvidia-smi 二、根据以下条件…

webpack和vite的区别

webpack和vite都是现代化web构建工具,但他们在构建速度、开发体验、构建结果等方面有所不同 1、构建速度:vite的速度一般快于webpack (1)传统的构建工具例如webpack在开发过程中会对整个应用或者大部分应用进行打包,之后浏览器才能加载处理之后的包(好比webpack打包先从入口文…

C语言---单身狗问题

1.单身狗初阶 这个题目就是数组里面有一串数字&#xff0c;都是成对存在的&#xff0c;只有一个数字只出现了一次&#xff0c;请你找出来 &#xff08;1&#xff09;异或是满足交换律的&#xff0c;两个相同的数字异或之后是0&#xff1b; &#xff08;2&#xff09;让0和每个…

如何利用数据采集工具,解决医疗数据采集痛点?

在当今信息发达的时代&#xff0c;医疗行业也面临着日益增长的数据量和越来越复杂的管理和挑战。医院是医疗服务的核心机构&#xff0c;需要处理大量病人信息、医疗记录、医疗影像等&#xff0c;从而确保病人最佳的治疗。 但传统的医院数据信息往往存在诸多问题&#xff0c;如…

CVPR 2022 Oral | Bailando: 基于编舞记忆和Actor-Critic GPT的3D舞蹈生成

目录 测试结果&#xff1a; 02 提出的方法 测试结果&#xff1a; 预测有3个步骤&#xff0c;速度比较慢 02 提出的方法 1. 针对舞蹈序列的VQ-VAE和编舞记忆 与之前的方法不同&#xff0c;我们不学习从音频特征到 3D 关键点序列的连续域的直接映射。相反&#xff0c;我们先让…

Oracle Linux 8.9 安装 Python 3.11.8 和 Miniconda

Oracle Linux 8.9 安装 Python 3.11.8 和 Miniconda 1. 安装 Python 3.11.82. 安装 Miniconda 1. 安装 Python 3.11.8 Update system, sudo dnf update -yInstall Library, sudo dnf install curl gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make git -yI…

Spring Boot 本地部署 JSP

自己是Spring Boot 的初学者&#xff0c;开始看教程的时候发现基本上都是部署的 JSP&#xff0c;但是按照教程一步步走下来始终无法成功&#xff0c;一直都是 404: 查阅各种资料后&#xff0c;总结出一套 Spring Boot 支持 JSP 的流程&#xff1a; 添加依赖 在pom.xml中添加…

Java算法之动态规划

Java算法之动态规划 前言 ​ 最近这一段时间一直在刷算法题&#xff0c;基本上一有时间就会做一两道&#xff0c;这两天做了几道动态规划的问题&#xff0c;动态规划之前一直是我比较头疼的一个问题&#xff0c;感觉好复杂&#xff0c;一遇到这样的问题就想跳过&#xff0c;昨…

jupyterlab 设置

字体 pip install jupyterlab-fontsFira Code Regular 主题 pip install theme-darcula更改jupyter lab默认启动路径 https://blog.csdn.net/monster_MF/article/details/119248111 &#xff08;1&#xff09;找到jupyter_lab_config所在路径 winR&#xff0c;输入cmd&am…

NIN网络中的网络

是什么 intro LeNet→AlexNet→VGG→NiN→GoogLeNet→ResNetLeNet→AlexNet→VGG 卷积层模块充分抽取空间特征全连接层输出分类结果AlexNet & VGG 改进在于把两个模块加宽 、加深&#xff08;加宽指增加通道数&#xff0c;那加深呢&#xff1f;&#xff08;层数增加叭 Ni…

qemu快速入门

前提&#xff1a; 我们做嵌入式软件的时候&#xff0c;往往可能会缺少嵌入式的硬件&#xff0c;那我们希望提前开始准备代码的话&#xff0c;就需要qemu这个开源软件&#xff0c;它可以模拟各种型号的芯片 。那么我们可以提前在这个模拟器上面去开发代码、验证、调试。 正片开始…

跨境电商新篇章:独立站如何携手海外网红营销,实现品牌飞跃

随着品牌出海的火热&#xff0c;独立站成为越来越多企业的选择。然而&#xff0c;在激烈的市场竞争中&#xff0c;如何提高独立站的知名度&#xff0c;成为企业亟需解决的问题之一。在这个背景下&#xff0c;海外网红营销崭露头角&#xff0c;成为一种备受关注的新型推广策略。…

Covalent(CQT)降低数据可用性成本,加快 Layer2 在 Web3 领域的扩张

Covalent Network&#xff08;CQT&#xff09;通过其统一 API&#xff0c;正在为 EVM Layer2 生态系统提供支持&#xff0c;减少了开发者需要导航多个数据供应商的需求&#xff0c;通过解决多链环境中的碎片化挑战&#xff0c;极大地提高了他们的效率。 通过其统一 API 支持 2…

蓝桥杯嵌入式2018年第九届省赛主观题解析

1 题目 2 解析 /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body********************************************************************…

3.6研究代码(2)

指的是微电网运行参数。 在MATLAB中&#xff0c;randi([0,1],1,48) 会生成一个包含1*48个0或1的随机整数数组。这意味着数组中的每个元素都将是0或1。 MATLAB帮助中心&#xff1a;均匀分布的伪随机整数 - MATLAB randi - MathWorks 中国https://ww2.mathworks.cn/help/matlab/r…

可调恒定电流稳压器NSI50150ADT4G车规级LED驱动器 提供专业的汽车级照明解决方案

NSI50150ADT4G产品概述&#xff1a; NSI50150ADT4G可调恒定电流稳压器 (CCR) &#xff0c;是一款简单、经济和耐用的器件&#xff0c;适用于为 LED 中的调节电流提供成本高效的方案&#xff08;与恒定电流二极管 CCD 类似&#xff09;。该 (CCR) 基于自偏置晶体管 (SBT) 技术&…

MybatisPlus分页失效不起作用问题剖析

【问题描述】 在使用MybatisPlus的selectPage时发现分页不起作用&#xff0c;每次返回的都是全部的数据&#xff0c;同时getPages()和getTotal()返回的都是0。 【相关代码】 mybatisPlus的版本&#xff1a; <dependency><groupId>com.baomidou</groupId>&…

官宣正式成为 PostgreSQL Contributor,Richard 有何秘诀?

作为世界上最受欢迎的开源数据库之一&#xff0c;PostgreSQL 国际社区于3月3日正式公布了新加入的 PostgreSQL Contributor 名单&#xff0c;以认可为 PostgreSQL 开源项目做出实质性、长期贡献的人员。本次公布的名单中包括 3 名 Contributor 和 6 名 Major Contributor。 拓…

移动App开发常见的三种模式:原生应用、H5移动应用、混合模式应用

引言 在移动应用市场的迅猛发展中&#xff0c;移动App开发正日益成为技术创新和用户体验提升的焦点。对于开发者而言&#xff0c;选择适合自己项目的开发模式成为至关重要的决策。本文将探究移动App开发的三种常见模式&#xff1a;原生应用、H5移动应用和混合模式应用。这三种…

Python(38):Request的data需入参是json,用转换json.dumps(data)

Python接口自动化测试遇到问题:误传str类型给request 一&#xff1a;request接口请求数据用str传参报错&#xff0c;请求响应报错 排查原因&#xff1a;查看服务器报错是Json解析报错。 1.1、如果直接入参&#xff0c;进行request请求的数据&#xff1a; data请求值为&…