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;

rust hello world

这里给个小建议,你可以使用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示例代码

Rust在编译时会检查格式的正确性,比如你使用了多个{ },但明显参数不够,这会导致编译器报错;

下面这段代码编译器将报错:

println!("{} {} days", 31);

转载声明
本文版权归作者所有

如需转载,请注明出处;本文地址: https://www.perfcode.com/p/rust-hello-world.html