Rust:eprintln!在rust中是什么宏,跟println!有什么区别?

eprintln!在rust作用是什么,跟println!有什么区别?

在Rust中, eprintln!println! 都是用来输出文本的宏, 但它们的输出目标不同。

  1. println! : 这个宏用于向标准输出 (stdout) 打印文本。通常,这是你在终端或命令行界面中直接看到的输出。

    arduino 复制代码
    println!("This is printed to stdout.");
  2. eprintln! : 这个宏用于向标准错误 (stderr) 打印文本。标准错误是一个用于显示错误消息和诊断信息的独立的输出流。这意味着,即使标准输出被重定向到文件或其他地方,标准错误上的消息仍然会直接显示在屏幕上。

    arduino 复制代码
    eprintln!("This is printed to stderr.");

在实践中, 当你希望输出错误或警告信息时,通常会使用 eprintln!,而其他常规输出则使用 println!。这种分离的好处是,你可以单独处理正常的程序输出和错误消息,例如,通过重定向这两种输出到不同的文件或处理工具。

在大多数操作系统中,当你运行一个程序时,它通常有三个默认的I/O流:标准输入(stdin)、标准输出(stdout)、和标准错误(stderr)。这三个流通常都关联到终端。

  1. 标准输出 (stdout) : 通常用于输出程序的正常结果。例如,当你运行一个计算器程序并计算 2 + 2,结果 4 会打印到stdout。
  2. 标准错误 (stderr) : 主要用于输出错误消息和诊断信息。这允许用户或开发者看到可能出现的问题,而不会与正常的程序输出混淆。

现在,来到重定向的部分:

当你在命令行中运行一个程序,你可以重定向其输出。这意味着,你可以将程序的stdout或stderr发送到文件或其他程序,而不是默认的终端显示。

例如,假设你有一个程序my_program,你可以这样重定向它的stdout到一个文件:

lua 复制代码
my_program > output.txt

在这种情况下,所有使用 println! 的输出都会进入 output.txt 文件,而不是显示在终端。但是,任何使用 eprintln! 的输出仍然会在终端上显示,因为我们只重定向了stdout,没有重定向stderr。

如果你想同时重定向stdout和stderr到同一个文件,你可以这样做:

lua 复制代码
my_program > output.txt 2>&1

println!eprintln! 都会默认输出到命令行,但是你可以选择重定向它们的输出到其他地方。通过区分这两种输出,你可以更灵活地控制如何处理正常的程序输出和错误消息。 from刘金,转载请注明原文链接。感谢!

相关推荐
本地化文档1 小时前
rustdoc-book-l10n
rust·github·gitcode
Tony Bai4 小时前
Rust 看了流泪,AI 看了沉默:扒开 Go 泛型最让你抓狂的“残疾”类型推断
开发语言·人工智能·后端·golang·rust
jump_jump5 小时前
RTK:给 AI 编码助手瘦身的 Rust 代理
性能优化·rust·claude
小杍随笔10 小时前
【Rust Exercism 练习详解:Anagram + Space Age + Sublist(附完整代码与深度解读)】
开发语言·rust·c#
Rust研习社12 小时前
Rust 字符串与切片实战
rust
朝阳58112 小时前
局域网聊天工具
javascript·rust
朝阳58112 小时前
我做了一个局域网传文件的小工具,记录一下
javascript·rust
Rust语言中文社区1 天前
【Rust日报】用 Rust 重写的 Turso 是一个更好的 SQLite 吗?
开发语言·数据库·后端·rust·sqlite
小杍随笔1 天前
【Rust 半小时速成(2024 Edition 更新版)】
开发语言·后端·rust
Source.Liu1 天前
【office2pdf】office2pdf 纯 Rust 实现的 Office 转 PDF 库
rust·pdf·office2pdf