Rust的第一个传统Hello World程序
本页将向你展示Rust的第一个传统程序;你将学会如何给程序添加注释、格式化打印文本信息,以及将Rust源码编译成可执行程序;
Hello World
传统的 hello world程序源码:
// 这是注释,编译器将忽略它
//main function ,程序入口
fn main() {
// 将文本信息打印到控制台
println!("Hello World!");
}
println!()
是将文本打印到控制台的宏;
使用rust编译器生成可执行程序:
rustc hello.rs
你将得到一个可执行程序,在Windows系统下是hello.exe,Linux系统下为hello;

这里给个小建议,你可以使用IDE进行程序的编写,因为它往往能提供很好的排版和着色;但编译程序时应该在控制台使用命令进行完成,这有助于让你了解rustc的一些功能;
注释
Rust支持几种不同类型的注释:
- 编译器会忽略的常规注释:
- // 行注释
- /* 块注释 */
- 还有一种文档注释,cargo可以将这类注释编译为HTML文档:
- /// 三斜杠的文档注释
- //! 双斜杠一感叹号的注释
fn main() {
// 这就是行注释
// 这是第二行
// 编译器会忽略它
// println!("Hello, world!");
// 看到上面那条注释没,编译器会忽略它
/*
这是一段块注释,你甚至可以在这里
画一幅字符串画
但别忘了漏下后面的注释符号
*/
let x = 5 + /* 90 + */ 5; //你可以写在代码后面
println!("Is `x` 10 or 100? x = {}", x);
}
对于文档注释,cargo(如果你不知道它,暂且不要管它,该示例教程后面会提到) 可以将他们编译成HTML形式的文档,支持Markdown:
/// Adds one to the number given.
///
/// # Examples
///
/// ```
/// let arg = 5;
/// let answer = my_crate::add_one(arg);
///
/// assert_eq!(6, answer);
/// ```
pub fn add_one(x: i32) -> i32 {
x + 1
}
本页不讨论文档注释的作用,以及编译、查看方法,示例教程后面会提到,学东西要循序渐进;
格式化打印
你可以使用一些已经定义好的宏来进行打印,这些宏使用标准库std::fmt实现:
- print!将信息输出到控制台 (io::stdout)
- println!与print!相同,但附加了换行符;
- eprint!将信息输出到标准错误(io::stderr)
- eprintln!与eprint!相同,但附加了换行符;
这些宏解析文本的方式相同,一些示例:
fn main() {
// {}将自动替换参数
println!("{} days", 31);
// 你可以在{}中加入数字,来表明使用第几个参数
println!("{0}, this is {1}. {1}, this is {0}", "Alice", "Bob");
// 你也可以为参数命名
println!("{subject} {verb} {object}",
object="the lazy dog",
subject="the quick brown fox",
verb="jumps over");
// 你可以在 :后面指定其输出格式,这里b表示二进制
println!("{} of {:b} people know binary, the other half doesn't", 1, 2);
// 指定宽度的右对齐文本
println!("{number:>width$}", number=1, width=6);
// 你可以用字符填充. 这里输出 "000001".
println!("{number:>0width$}", number=1, width=6);
}
程序输出:

Rust在编译时会检查格式的正确性,比如你使用了多个{ },但明显参数不够,这会导致编译器报错;
下面这段代码编译器将报错:
println!("{} {} days", 31);