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

分类: 计算机技术
推荐阅读:
如何卸载 Dev Home Dev Home是Windows的一个新的控制中心,提供了使用可定制的小部件在仪表板中监控项目的能力,通过下载应用程序,包或存储库来设置开发环境;要卸载Dev Home,需以管理员权限打开 PowerShell,并执行以下命令:
Python实现斐波那契数列(使用通项公式) 本文将使用Python编写程序,根据斐波那契数列的通项公式得出第n项的值;
Implementation of the USB 2.0 controller not found!解决方案 你可能在使用VirtualBox启动虚拟机系统时碰到“不能为虚拟电脑打开一个新的任务”的错误提示,并提示 Implementation of the USB 2.0 controller not found!
C语言程序反转一个数字 在本文中,你将学会使用C语言反转一个整数;用户输入一个整数,程序将其进行反转;例如:12345 => 54321
打开任务管理的一瞬间CPU飙到很高,这种现象正常吗? Windows系统上的任务管理器(进程名Taskmgr.exe)用于实时显示计算机当前有关于性能、进程、服务等信息;细心的朋友会发现,在打开任务管理器的一瞬间,CPU使用率瞬间飙升,基本上会达到100%,随后也会很快回落,那这种现象正常么?
cannot use 1 (type int) as type bool in assignment错误的解决方法 在go语言中布尔类型不能接受其他类型的赋值,不支持自动或强制的类型转换。