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刘金,转载请注明原文链接。感谢!

相关推荐
DongLi019 小时前
rustlings 学习笔记 -- exercises/05_vecs
rust
番茄灭世神1 天前
Rust学习笔记第2篇
rust·编程语言
shimly1234561 天前
(done) 速通 rustlings(20) 错误处理1 --- 不涉及Traits
rust
shimly1234561 天前
(done) 速通 rustlings(19) Option
rust
@atweiwei1 天前
rust所有权机制详解
开发语言·数据结构·后端·rust·内存·所有权
shimly1234561 天前
(done) 速通 rustlings(24) 错误处理2 --- 涉及Traits
rust
shimly1234561 天前
(done) 速通 rustlings(23) 特性 Traits
rust
shimly1234561 天前
(done) 速通 rustlings(17) 哈希表
rust
shimly1234561 天前
(done) 速通 rustlings(15) 字符串
rust
shimly1234561 天前
(done) 速通 rustlings(22) 泛型
rust