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

分类: 计算机技术
推荐阅读:
Linux找出目录下所有内容重复的文件(包含子目录) 在Linux系统下,如果你想找出某个目录下(包含子目录)所有内容重复的文件,你可以使用这一条命令实现:
C source files not allowed when not using cgo or SWIG: 解决办法 Go语言中,当你没有使用cgo编程,而go文件目录下却存在c文件时将引发诸如 package .: C source files not allowed when not using cgo or SWIG: main.c test.c 的错误;
查看Linux系统是32位还是64位 在Linux系统下,你可以通过一条命令获得系统是32位的还是64位的:
Python里with语句的用法与技巧 本文将详细讲解Python语言中with语句的用法,以及如何让自定义的类也支持with语句;
Golang实现获取指定长度的随机字符串 本文将详细的介绍Go语言中如何正确使用rand.Intn()函数作为核心,来生成指定长度的随机字符串。
VirtualBox菜单隐藏了怎么打开? 我们使用VirtualBox运行虚拟机后,可以通过视图菜单改变虚拟机的显示方式,其中包括全屏模式,无缝模式,自动缩放模式,使用了这些模式后,可能导致上方的菜单消失;