每日见闻之Rust中的日志输出

1 基础占位符

arduino 复制代码
println!("Hello, {}!", "world");

输出Hello, world!

2 数字格式化

arduino 复制代码
println!("{:04}", 42);

输出0042

  • {:04} 指定宽度为 4,不足部分用 0 填充(常用于补全日期、时间等)。

3 Debug 格式化

rust 复制代码
#[derive(Debug)]
struct User {
    name: String,
    age: u8
}

fn main() {
    let  user =  User {
        name : String::from("123"),
        age : 10
    };
    println!("{:?}", user);
    println!("{:#?}", user);
}

{:#?} 输出

js 复制代码
User {
    name: "123",
    age: 10,
}

{:?} 输出

js 复制代码
User { name: "123", age: 10 }
  • {:?} 使用类型的 Debug 实现格式化(适用于元组、结构体等)。
  • {:#?} 是美化版的 Debug 输出,常用于复杂结构的多行显示。

4 命名参数

ini 复制代码
println!("{password} is {value}", password = "password",value=4);

输出 password is 4

5 变量插值

ini 复制代码
let world = "world";
let name = "milk";
println!("Hello {world}!,My name is {name}!");
  • 直接在 {} 中使用变量名(无需显式传递参数),类似 Python 的 f-string

6 多参数与位置

arduino 复制代码
println!("My name is {} ,My Age is {}", "Milk", 18)

输出 My name is Milk ,My Age is 18

  • 多个 {} 按顺序对应后面的参数

7 浮点数控制位数

arduino 复制代码
println!("浮点数控制位数 : {:.2}",3.1415926)

输出3.24

  • {:.2}保留两位小数

8 输出对应的16进制

arduino 复制代码
println!("输出对应的16进制 : {:x}",255)

输出ff

9 输出对应的二进制

arduino 复制代码
println!("输出对应的16进制 : {:b}",8)

输出1000

10 显示索引

arduino 复制代码
println!("显示索引 : {1} {} {} {0}",10,20)

输出 显示索引 : 20 10 20 10

  • {}中指定下标的为显示索引,按索引从后面的参数中取,{1}取得就是第二个参数 20
  • {}中不指定下标的是普通占位符,按顺序取参数

11 格式化字符串中的宽度参数

arduino 复制代码
println!("Hello {:5}!", "x");  // 输出: "Hello x    !"
  • {:5} 表示将参数 x 格式化为宽度为 5 的字符串,不足部分用空格填充。
  • 最终输出中,x 右侧有 4 个空格(总宽度为 5)。
arduino 复制代码
println!("Hello {:1$}!", "x", 5);  // 输出: "Hello x    !"
  • {:1$} 中的 1$ 表示使用 ** 第二个参数(索引 1)** 作为宽度值,即 5
  • 等价于 {:5},但宽度值从参数列表动态获取。
arduino 复制代码
println!("Hello {1:0$}!", 5, "x");  // 输出: "Hello x    !"
  • {1:0$} 中的 1 表示 ** 第二个参数(索引 1)** 是要格式化的值(即 "x")。
  • 0$ 表示使用 ** 第一个参数(索引 0)** 作为宽度值(即 5)。
  • 整体效果:将 "x" 格式化为宽度为 5 的字符串。

12 字符串对齐与填充的高级控制

12.1 左对齐

arduino 复制代码
println!("Hello {:<5}!", "x");

输出

复制代码
Hello x    !
  • {:<5} :显式指定左对齐<),宽度为 5。
  • 行为 :字符串 "x" 居左,右侧补 4 个空格(总宽度 5)。

12.2 自定义填充符

arduino 复制代码
println!("Hello {:-<5}!", "x")

输出

lua 复制代码
Hello x----!
  • {:-<5} :左对齐(<),用 - 填充剩余宽度。
  • 行为 :字符串 "x" 居左,右侧补 4 个 -

12.3 居中对齐

arduino 复制代码
println!("Hello {:^5}!", "x")

输出

复制代码
Hello   x  !

12.4 右对齐

arduino 复制代码
println!("Hello {:>5}!", "x");

输出

复制代码
Hello     x!
相关推荐
mldong7 小时前
流程实例如何沿着箭头走到结束:Rust 工作流引擎的执行内核
架构·rust
小灰灰搞电子14 小时前
Rust+Slint 实现动态轮播图源码分享,支持动态删除、添加
开发语言·rust·slint·动态轮播图
今天AI了吗15 小时前
大模型技术全景(一):AI、机器学习、深度学习,三者的关系到底是什么?一文搞懂
数据库·人工智能·python·sql·深度学习·机器学习·rust
Naylor16 小时前
切片:指向一段数据,而不是全部
rust
阿翰19 小时前
MiniPdf Office 转 PDF 支持 Rust 原生实现:3 MB 单文件部署、低内存
rust·minipdf
小灰灰搞电子19 小时前
Rust+Slint 实现圆形变色按钮源码分享
rust·slint·变色按钮
flyxl19 小时前
DataZen 架构设计(一):一个现代桌面数据库工具是如何构建的
rust
k4m7v2pz19 小时前
用 rust-verb-shell 重写进程管理:从 game.sh 到 .rvs 的迁移实录
开发语言·后端·rust
mldong1 天前
同一份 15 个流程 JSON,第六种语言也跑通了:工作流引擎 Rust 移植实录
架构·rust
Naylor3 天前
只借不占:Rust 的引用与借用
后端·rust