当前位置: 首页 > article >正文

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})

相关文章:

Rust 格式化输出完全攻略:从入门到精通

在 Rust 开发中,格式化输出是调试、日志打印、字符串构造的核心技能。Rust 提供了一套强大且灵活的输出宏体系,支持普通打印、调试输出、自定义格式、精度控制、对齐填充等几乎所有场景。 本文结合完整知识点,为你总结 Rust 中所有输出方式 …...

别被“高维空间”唬住了:白话拆解 AI 时代的绝对基石——Embedding

在前面几篇关于 RAG(检索增强生成)和 Agent 的博客里,我们反复提到过一句话:“把文档切块,转成向量(Vector)存进数据库”。很多刚入行的同学照着文档调通了 API,看到一段文字神奇地变…...

从零开始在Ubuntu上利用Docker部署FoundationPose项目

系统环境: CPU:Intel Core™ i7-14650HX 显卡:NVIDIA Geforce RTX 4060 Laptop (Driver:535.288.01) CUDA:11.8 操作系统:Ubuntu 22.04.5 LTS FoundationPose项目地址:ht…...

python jupyter

## nbconvert:深入理解 Jupyter Notebook 转换工具 用过 Jupyter Notebook 的人都会遇到这样一个场景:你精心整理了一个分析报告,里面有代码、图表、说明文字,但当你想要把这份成果分享给别人时,发现对方电脑上没有装 …...

第 1 篇:Codex App 是什么?从安装环境到第一次打开

第 1 篇:Codex App 是什么?从安装环境到第一次打开 本篇目录 Codex App 到底是什么使用 Codex 前要准备什么安装 Node.js安装 Git安装 VS Code下载并启动 Codex App登录 ChatGPT 账户完成首次初始化看懂 Codex App 的三栏布局本篇小结与检查清单 1. Code…...

GitHub Copilot CLI中使用skills教程(以aminer-open-skill为例)

目录GitHub Copilot CLI的安装与使用skills一、GitHub Copilot CLI安装二、初次使用GitHub Copilot CLI三、在GitHub Copilot CLI使用skills四、aminer-open-skill的配置使用GitHub Copilot CLI的安装与使用skills 注:我是在WSL2中执行的 一、GitHub Copilot CLI安…...

设计模式 - 行为型设计模式 - 状态模式(Java)

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程大家好!欢迎来到我的网站! 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑&#x…...

Java 泛型详解(超详细的java泛型方法解析)

1. 为什么使用泛型早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题。来看一个经典案例:123456789101112public static void main(String[]…...

从‘水中人’到‘系统英雄’:用Python+Flask手把手教你搭建一个匿名英雄事迹记录平台

从匿名善举到技术赋能:用Flask构建英雄事迹共享平台 在华盛顿波托马克河冰冷的河水中,那个将救生设备一次次让给他人、最终消失在湍流中的无名男子,用行动诠释了人性最耀眼的光芒。这种无需留名的善举,恰恰构成了现代社会最稀缺的…...

手把手教你用Python模拟光的偏振:从马吕斯定律到椭圆偏振光生成

用Python模拟光的偏振:从马吕斯定律到椭圆偏振光实战指南 偏振光是光学领域中一个既基础又充满魅力的现象。想象一下,当你戴着偏光太阳镜仰望蓝天时,镜片如何巧妙地过滤掉刺眼的眩光——这正是偏振原理在日常生活中的直观体现。对于理工科学生…...

分布式文件系统数据漂移治理:监测、诊断与自动修复实践

1. 项目概述:从“ClawdEFS/drift”看分布式文件系统的数据漂移挑战最近在梳理分布式存储系统的运维记录时,一个名为“ClawdEFS/drift”的内部项目标题反复出现,它精准地概括了我们过去几年在维护一个大规模、多区域部署的类EFS(弹…...

机器学习参数化与非参数化算法对比与应用

1. 机器学习算法分类全景图当我们需要从数据中提取规律时,算法选择往往决定了项目的成败。在机器学习领域,参数化与非参数化算法构成了两大核心方法论体系,它们代表了建模过程中对数据分布假设的根本性差异。参数化方法就像带着固定尺寸的模具…...

手把手教你用DAVIS346事件相机复现EV-Eye眼动追踪实验(附数据集下载与代码解析)

基于DAVIS346事件相机的EV-Eye眼动追踪全流程复现指南 当眼球以700/秒的速度运动时,传统摄像头就像用网兜捕捉子弹——而事件相机则像用高速摄影机记录每一颗弹道的轨迹。这种生物启发的视觉传感器正在重新定义眼动追踪的技术边界。本文将带您从零开始复现EV-Eye这一…...

Swoole WebSocket + LLM流式响应架构升级(2026企业级避坑手册)

更多请点击: https://intelliparadigm.com 第一章:Swoole WebSocket LLM流式响应架构升级(2026企业级避坑手册) 在高并发实时交互场景中,传统 HTTP 轮询或长连接难以支撑 LLM 流式输出的低延迟、高吞吐需求。Swoole …...

别再问JDK怎么装了!Win11下Java环境变量配置保姆级避坑指南(附JDK8/11/17/21安装包)

Win11下Java开发环境配置全攻略:从安装到避坑实战 每次看到新手在配置Java环境时反复踩坑,我都会想起自己当年对着命令行反复输入java -version却只得到"不是内部或外部命令"的挫败感。今天我们就来彻底解决这个问题,不仅告诉你正…...

告别Socket烦恼:用DotNetty在.NET 6/8里快速搭建一个Echo服务器(附完整源码)

用DotNetty构建高可靠Echo服务的实战指南 在.NET生态中处理TCP通信时,许多开发者都经历过原生Socket带来的阵痛——繁琐的连接管理、回调地狱式的异步处理、难以维护的状态同步。我曾在一个物联网平台项目中,因为传统TcpListener的线程阻塞问题导致服务在…...

浏览器中的法线贴图生成器:3分钟将普通图片转为专业3D纹理

浏览器中的法线贴图生成器:3分钟将普通图片转为专业3D纹理 【免费下载链接】NormalMap-Online NormalMap Generator Online 项目地址: https://gitcode.com/gh_mirrors/no/NormalMap-Online 你是否曾经为3D模型缺乏表面细节而烦恼?或者想要为游戏…...

Transformer面试别再背八股文了!用这5个可视化工具,把多头注意力、位置编码彻底搞懂

Transformer面试不再死记硬背:5个可视化工具彻底掌握多头注意力与位置编码 在技术面试中,关于Transformer架构的问题常常让候选人陷入两难:要么机械背诵概念定义,要么面对"为什么这样设计"的追问哑口无言。传统学习方式…...

视频下载助手:解锁在线视频保存的终极解决方案

视频下载助手:解锁在线视频保存的终极解决方案 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾因无法保存喜欢的在线视频…...

EPLAN 2.9破解版安装后,第一张电路图怎么画?端子排、符号库实战教学

EPLAN 2.9实战入门:从零绘制第一张电路图 刚安装完EPLAN 2.9的工程师常会遇到一个尴尬局面——软件界面复杂得让人无从下手。别担心,今天我们就用最直白的方式,带你完成第一个包含端子排的完整电路图。忘记那些枯燥的理论,直接动手…...

OBS虚拟摄像头终极指南:3分钟学会专业视频流转换

OBS虚拟摄像头终极指南:3分钟学会专业视频流转换 【免费下载链接】obs-virtual-cam 项目地址: https://gitcode.com/gh_mirrors/obs/obs-virtual-cam 想要将OBS Studio的专业视频效果无缝应用到Zoom、Teams等视频会议软件中吗?OBS-VirtualCam正是…...

利用 Taotoken 为内部知识库问答系统接入智能语义理解能力

利用 Taotoken 为内部知识库问答系统接入智能语义理解能力 1. 知识库问答系统的智能化需求 企业内部知识库系统通常包含大量文档、手册和常见问题解答,传统的关键词检索方式难以满足员工对精准语义理解的需求。通过接入大模型能力,可以实现自然语言提问…...

LiDAR-惯性里程计标定与自适应定位技术解析

1. LiDAR-惯性里程计技术概述LiDAR-惯性里程计(LIO)作为现代机器人导航系统的核心组件,通过融合激光雷达(LiDAR)与惯性测量单元(IMU)的感知数据,实现了在GNSS拒止环境下的高精度定位…...

Unity开发效率翻倍!用Odin插件5分钟搞定自定义Inspector(附常用Attribute清单)

Unity开发效率革命:Odin插件打造专业级Inspector全指南 你是否经历过这样的场景:当策划同事皱着眉头问你"这个数值到底该怎么填"时,你只能无奈地解释Unity默认Inspector的晦涩布局;或者当美术同学需要频繁调整角色属性时…...

SH1107 OLED屏幕竖屏显示实战:手把手教你用C语言实现90度旋转(附完整代码)

SH1107 OLED屏幕竖屏显示实战:从算法原理到嵌入式实现 在智能手表、便携式医疗设备和工业手持终端等垂直显示场景中,开发人员常常面临一个棘手问题:多数OLED屏幕原生仅支持水平显示模式。SH1107作为广泛使用的OLED驱动芯片,其硬件…...

别再只加压敏电阻了!汽车直流有刷电机EMC整改,滤波电容怎么选才有效?

直流有刷电机EMC整改实战:从电容谐振特性到精准滤波策略 实验室里,示波器上跳动的波形和频谱分析仪上那些刺眼的红色超标频点,可能是每个EMC工程师最熟悉的"噩梦场景"。特别是当面对汽车直流有刷电机这类"噪声大户"时&am…...

Weka机器学习工具:从入门到实战应用指南

1. Weka机器学习工作台概览Weka(Waikato Environment for Knowledge Analysis)是新西兰怀卡托大学开发的经典机器学习工具集,最初为农业数据研究而设计,如今已成为教学科研领域最受欢迎的入门级机器学习平台之一。我第一次接触Wek…...

使用Taotoken后月度AI模型开支变得清晰可预测的实际体验

使用Taotoken后月度AI模型开支变得清晰可预测的实际体验 1. 多供应商账单的痛点 过去在同时使用多个大模型供应商时,每个平台都有独立的计费方式和账单周期。有的按调用次数收费,有的按token阶梯定价,还有的采用订阅制加超额计费。每月需要…...

MCP 2026实时修复能力全解析,覆盖Log4j2、Spring4Shell、ZeroLogon等17类高危漏洞的内存级热修复实践

更多请点击: https://intelliparadigm.com 第一章:MCP 2026实时修复能力全景概览 MCP 2026(Mission-Critical Patching 2026)是新一代面向高可用系统的内核级热修复框架,支持在不中断服务、不重启进程的前提下动态注入…...

FourierSampler在分布式大语言模型训练中的优化实践

1. 项目背景与核心价值FourierSampler作为新兴的采样技术,在分布式大语言模型(dLLMs)训练中展现出独特优势。这项技术通过频域变换重构了传统采样的计算范式,使得模型在分布式环境下能够更高效地捕捉长程依赖关系。我在实际部署中…...