每日见闻之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!
相关推荐
mit6.8242 小时前
理念导向编程|ts
rust·typescript
ZC·Shou8 小时前
Rust 之二 各组件工具的源码、构建、配置、使用
rust·cargo·rustup·mdbook·clippy
MOON404☾10 小时前
Rust 与 传统语言:现代系统编程的深度对比
开发语言·后端·python·rust
一只小松许️1 天前
深入理解:Rust 的内存模型
java·开发语言·rust
修仙的人1 天前
Rust + WebAssembly 实战!别再听说,学会使用!
前端·rust
alwaysrun1 天前
Rust中的特征Trait
rust·trait·impl trait·dyn trait·派生特征
为java加瓦1 天前
Rust 的类型自动解引用:隐藏在人体工学设计中的魔法
java·服务器·rust
leiteorz1 天前
第三章 Ownership与结构体、枚举
rust
alwaysrun2 天前
Rust中所有权和作用域及生命周期
rust·生命周期·作用域·所有权·引用与借用
FleetingLore2 天前
Rust | str 常用方法
rust