主页 > 人工智能  > 

Rust语言入门(一):打印与格式化输出

Rust语言入门(一):打印与格式化输出

对于初学者来说,掌握 Rust 的基本 I/O 操作是入门的第一步。本篇博客将介绍 Rust 语言的打印机制,包括基本的 print!、println! 宏,格式化输出方式,并探讨其底层原理。

Rust 的基本打印

在 Rust 中,最常见的输出方式是使用 println! 和 print! 宏。

fn main() { println!("Hello, world!"); } println! 和 print! println!:带换行符的输出,相当于 C 语言的 printf("...\n");print!:不带换行符,需要手动添加 \n

示例:

fn main() { print!("Hello, "); println!("world!"); }

输出:

Hello, world! 格式化输出

Rust 提供了强大的格式化输出功能,通过 {} 占位符实现。常见的格式化方式有:

1. 基本格式化

fn main() { let name = "Rust"; let version = 1.73; println!("{} is a systems programming language. Version: {}", name, version); }

输出:

Rust is a systems programming language. Version: 1.73 2. 位置参数

fn main() { println!("{1} is better than {0}!", "C", "Rust"); }

输出:

Rust is better than C! 3. 具名参数 fn main() { println!("{language} is fun!", language="Rust"); }

输出:

Rust is fun! 4. 指定格式

Rust 支持各种格式控制,如二进制、十六进制、科学计数法等。

fn main() { let num = 42; println!("Binary: {:b}, Hex: {:x}, Octal: {:o}", num, num, num); }

输出:

Binary: 101010, Hex: 2a, Octal: 52 5. 指定宽度和对齐 右对齐(默认): println!("{:>10}", "Rust");

输出:

Rust 左对齐: println!("{:<10}", "Rust");

输出:

Rust 填充字符: println!("{:*>10}", "Rust");

输出:

******Rust 6. 浮点数格式化 fn main() { let pi = 3.1415926; println!("Pi to 2 decimal places: {:.2}", pi); }

输出:

Pi to 2 decimal places: 3.14 Debug 格式化输出

Rust 提供 {:?} 进行 Debug 格式输出,适用于调试。

fn main() { let tuple = (1, "Rust", 3.14); println!("{:?}", tuple); }

输出:

(1, "Rust", 3.14)

对于复杂数据结构,可以使用 {:#?} 进行美化输出。

fn main() { let numbers = vec![1, 2, 3, 4, 5]; println!("{:#?}", numbers); }

输出:

[ 1, 2, 3, 4, 5, ] Display vs Debug

如果一个结构体希望支持 println!,需要实现 Display 或 Debug。

Debug 仅适用于调试 #[derive(Debug)] struct Person { name: String, age: u8, } fn main() { let p = Person { name: "Alice".to_string(), age: 30 }; println!("{:?}", p); // 自动实现 `Debug` } Display 自定义格式

Display 需要手动实现:

use std::fmt; struct Person { name: String, age: u8, } impl fmt::Display for Person { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{} is {} years old", self.name, self.age) } } fn main() { let p = Person { name: "Alice".to_string(), age: 30 }; println!("{}", p); }

输出:

Alice is 30 years old 原理解析

Rust 的 println! 是一个宏,而非函数。这意味着:

编译时解析:Rust 编译器会在编译期解析 println! 并展开代码,确保类型安全。自动格式检查:Rust 不允许格式不匹配,比如 println!("{}", 42, 43); 会编译报错。零开销抽象:格式化操作会在编译时尽可能优化,保证高效性。 总结 println! 和 print! 是 Rust 的基本输出宏。{} 用于格式化输出,支持参数位置、宽度控制、进制转换等。Debug({:?})适用于调试,Display 可自定义格式化。println! 作为宏,提供编译时检查和高效性。

Rust 的打印与格式化机制既强大又安全,掌握这些基本概念有助于提高代码的可读性和可维护性。希望这篇文章对你有所帮助,欢迎留言交流!

标签:

Rust语言入门(一):打印与格式化输出由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Rust语言入门(一):打印与格式化输出