每日见闻之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!
相关推荐
林太白5 小时前
Rust-连接数据库
前端·后端·rust
林太白5 小时前
Rust认识安装
前端·后端·rust
UestcXiye9 小时前
Rust 学习笔记:面向对象语言的特点
rust
火鸟210 小时前
Rust 通用代码生成器:莲花,红莲尝鲜版三十六,哑数据模式图片初始化功能介绍
开发语言·后端·rust·通用代码生成器·莲花·红莲·图片初始化功能
林太白11 小时前
Rust项目搭建
前端·后端·rust
寻月隐君12 小时前
Solana 开发进阶:链上事件到链下解析全攻略
后端·rust·web3
solohoho1 天前
Rust:unwrap_or_else()做什么事情?
rust
关山月1 天前
Rust 教程:通过示例掌握字符串
rust
struggle20252 天前
Burn 开源程序是下一代深度学习框架,在灵活性、效率和可移植性方面毫不妥协
人工智能·python·深度学习·rust