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

分类: 计算机技术
推荐阅读:
Golang实现判断文件或文件夹是否存在 golang通过使用 os包中的Stat()函数和IsNotExist()函数即可判断文件或文件夹是否存在。
Rust好用的GUI库 Rust生态系统中有许多GUI库可供选择,以下是一些受欢迎的Rust GUI库:
C语言获取整行输入的多种方法 在C语言中,有多种方法可以实现从标准输入流(stdin)中读取整行输入;最常见的方法是使用例如fgets()、scanf()、getchar()这些函数;
Python实现将二进制码转换为格雷码 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code);本文将使用Python实现将二进制码转换为格雷码;
MySQL函数大全 本教程几乎收罗了MySQL的所有内置函数;其中包括数学函数、日期和时间函数、字符串函数、转换函数、加密函数、压缩函数、XML函数、JSON函数等等。
从Nginx日志中提取UserAgent、IP等信息 有时我们需要用到大量UserAgent信息,而Nginx日志文件中包含了海量真实的UserAgent,从Nginx文件中提取所有UserAgent信息就很有必要;