学习笔记(1)只是浏览了一下文档,先堵为快。本次从头学习一下具体语法和规则。
从注释开始学起吧。
注释
- 普通注释,其内容将被编译器忽略掉:
// 单行注释,注释内容直到行尾。
/* 块注释,注释内容一直到结束分隔符。 */
- 文档注释,其内容将被解析成 HTML 帮助文档:
/// 为接下来的项生成帮助文档。
//! 为注释所属于的项(译注:如 crate、模块或函数)生成帮助文档。
/*
* 这是一个多行注释,
* 可以跨越多行来解释代码块。
*/
fn some_function() {
// 函数内部的代码
}
单行注释:使用双斜线 //
来创建。这种类型的注释可以放在行的开头或者代码的任何空白处,用于注释掉一行代码或对一行代码进行解释。
示例:
// 这是一个单行注释,用来解释下面的代码行
let x = 5;
多行注释:Rust 使用 /* ... */
来包围多行注释的内容。这种方式适合注释一大段代码或者文档注释。
示例:
/*
* 这是一个多行注释,
* 可以跨越多行来解释代码块。
*/
fn some_function() {
// 函数内部的代码
}
文档注释:特殊的多行注释,用于生成自动文档。这些注释以三个斜线和一个星号 ///
开始(用于函数、方法等的外部文档),或者三个反引号 /** ... */
包裹(可以在任何项之前,包括模块、结构体、枚举、trait 等,且支持Markdown格式)。
示例:
/// 返回x的平方值。
fn square(x: i32) -> i32 {
x * x
}
/**
* 此函数计算两个数的和。
*
* # Examples
*
* ```
* assert_eq!(add(1, 2), 3);
* ```
*/
fn add(a: i32, b: i32) -> i32 {
a + b
}
格式化输出
在Rust中,格式化输出主要有以下几种方法:
使用println!
宏:这是最基本的输出方式,可以直接将字符串及其变量插入到控制台输出中。
示例:
println!("Hello, {}!", "world");
使用format!
宏:如果你需要构建一个字符串而不是立即打印,可以使用format!
宏。结果会存储在一个String
中。
示例:
let greeting = format!("Hello, {}!", "world");
println!("{}", greeting);
使用标准输出(stdout
)和写入器(Write
trait):对于更复杂的输出操作,比如格式化输出到文件或其他流,你可以获取标准输出的写入器并通过实现Write
特质的方法进行写入。
示例:
use std::io::Write;
let mut out = std::io::stdout();
write!(out, "formatted {}", "output").unwrap();
format_args!
宏:这是一个底层工具,通常不直接在应用程序代码中使用,但它被上述宏如println!
和format!
所利用,允许高度定制化的格式化。
eprint!
和 eprintln!
:用于错误信息,它们不会添加换行符(eprint!
)或会添加换行符(eprintln!
),并且输出到标准错误(stderr)而非标准输出。
高级格式化:fmt
模块 - Rust 标准库中的fmt
模块提供了丰富的格式化选项,包括精度设置、对齐、宽度限制等。这些功能可以通过上述宏间接使用,也可以直接在实现了fmt::Display
和fmt::Debug
等特性的类型上使用。
迭代器和集合的格式化 - 如join!
宏可以用于连接集合中的元素成一个字符串,尽管这不是标准库的一部分,但社区中有提供这样的工具宏。
使用这些格式化宏时,错误处理是重要的考虑因素,特别是当涉及到I/O操作时,确保正确处理Result
返回值以防程序异常终止。