每日见闻之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!
相关推荐
m0_4805026411 小时前
Rust 登堂 之 函数式编程(三)
开发语言·后端·rust
小喷友18 小时前
阶段一:入门(理解 Rust 的基本概念)
前端·rust
m0_480502641 天前
Rust 入门 注释和文档之 cargo doc (二十三)
开发语言·后端·rust
盒马盒马2 天前
Rust:变量、常量与数据类型
开发语言·rust
傻啦嘿哟2 天前
Rust爬虫实战:用reqwest+select打造高效网页抓取工具
开发语言·爬虫·rust
咸甜适中2 天前
rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十四)垂直滚动条
笔记·学习·rust·egui
张志鹏PHP全栈3 天前
Rust第四天,Rust中常见编程概念
后端·rust
咸甜适中3 天前
rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十五)网格布局
笔记·学习·rust·egui
susnm3 天前
最后的最后
rust·全栈
bruce541105 天前
深入理解 Rust Axum:两种依赖注入模式的实践与对比(二)
rust