Rust 格式化输出完全攻略:从入门到精通
在 Rust 开发中格式化输出是调试、日志打印、字符串构造的核心技能。Rust 提供了一套强大且灵活的输出宏体系支持普通打印、调试输出、自定义格式、精度控制、对齐填充等几乎所有场景。本文结合完整知识点为你总结 Rust 中所有输出方式 格式化语法通俗易懂、全是干货看完就能直接用在项目里。一、Rust 五大输出宏必背Rust 提供 5 个核心输出宏分工明确宏作用输出目标换行print!格式化输出文本标准输出 (stdout)❌println!格式化输出文本 自动换行标准输出✅format!生成格式化字符串不打印返回 String内存字符串—eprint!错误信息输出标准错误 (stderr)❌eprintln!错误信息输出 自动换行标准错误✅简单示例fnmain(){// 打印不换行print!(Hello );// 打印并换行println!(World!);// 生成格式化字符串最常用letsformat!({} {},1,2);println!({s});// 错误输出用于日志、报错eprintln!(错误文件打开失败);}二、两种核心占位符{} 与 {:?}Rust 抛弃了 C 语言的%d/%s只用两种占位符搞定一切1.{}—— 面向用户的友好输出实现std::fmt::Display特征用于最终用户展示字符串、数字默认支持结构体不能直接用需手动实现Displayprintln!({},123);println!({},hello);2.{:?}—— 面向调试的输出实现std::fmt::Debug特征用于开发调试绝大多数类型可直接用数组、Vec、枚举等结构体只需#[derive(Debug)]#[derive(Debug)]structUser{name:String}println!({:?},User{name:Zhang.into()});3.{:#?}—— 美化调试输出自动换行 缩进println!({:#?},vec![1,2,3]);输出结构清晰适合复杂数据调试。三、自定义类型如何输出高频面试 / 开发1. 调试用给结构体加#[derive(Debug)]最简单90% 场景够用。2. 展示用手动实现Display特征usestd::fmt;structPerson{name:String,age:u8}implfmt::DisplayforPerson{fnfmt(self,f:mutfmt::Formatter)-fmt::Result{write!(f,姓名{}年龄{},self.name,self.age)}}// 使用{}println!({},Person{name:张三.into(),age:18});3. 外部类型无法直接实现 Display用 Newtype 包装structArray(Veci32);implfmt::DisplayforArray{fnfmt(self,f:mutfmt::Formatter)-fmt::Result{write!(f,数组{:?},self.0)}}四、高级格式化语法万能格式手册1. 位置参数println!({1} {0},a,b);// 输出 b a2. 具名参数println!({name},name张三);3. Rust 1.58 直接捕获环境变量超级好用letname张三;println!({name});// 直接用变量名五、宽度、对齐、填充格式化表格必备左对齐/ 右对齐/ 居中^println!({:5},x);// 左对齐x____println!({:5},x);// 右对齐____xprintln!({:^5},x);// 居中__x__指定填充字符println!({:-5},x);// x----数字补 0println!({:05},42);// 00042六、精度控制浮点数保留小数println!({:.2},3.14159);// 3.14字符串截取长度println!({:.3},hello);// hel七、进制输出调试神器println!({:#b},27);// 二进制 0b11011println!({:#o},27);// 八进制 0o33println!({:#x},27);// 小写十六进制 0x1bprintln!({:#X},27);// 大写十六进制 0x1B八、指针地址输出letvvec![1,2,3];println!({:p},v.as_ptr());// 输出内存地址九、转义输出想打印{和}println!({{}});// 输出 {}println!(\Hello\);// 输出 Hello十、一张图记住 Rust 输出体系标准输出print! / println! 错误输出eprint! / eprintln! 字符串生成format! 占位符 {} Display用户展示 {:?} Debug 调试 {:#?} 美化调试 格式控制 对齐 ^ 填充0 或自定义符号 精度.2 .4 进制b o x X总结最核心 4 条日常打印用println!构造字符串用format!给用户看用{}调试用{:?}复杂结构体必须加#[derive(Debug)]Rust 1.58 可直接println!({var})
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2573306.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!