Rust 学习笔记 - 在浏览器上输出 Hello world!(一)

栏目: 编程语言 · Rust · 发布时间: 6年前

内容简介:欢迎回来!“Hello world”几乎是学习任何语言的第一个程序了,学习Rust页不例外。在开始之前,请你先确保在自己电脑上安装了Rust。如果你还没有安装的话,我们一起安装一遍,不过,我使用的是Linux操作系统,其他系统可能略有不同,这个你需要注意。Rust 使用 Rustup 安装,你也可以查看更详细的文档:首先,打开一个终端,输入:

欢迎回来!

“Hello world”几乎是学习任何语言的第一个程序了,学习Rust页不例外。在开始之前,请你先确保在自己电脑上安装了Rust。如果你还没有安装的话,我们一起安装一遍,不过,我使用的是 Linux 操作系统,其他系统可能略有不同,这个你需要注意。Rust 使用 Rustup 安装,你也可以查看更详细的文档: Rustup

首先,打开一个终端,输入:

$ curl https://sh.rustup.rs -sSf | sh

这行代码会帮助我们下载一个小脚本并运行它,由于网络的原因,你需要耐心等待,多尝试几次, 直到出现类似的字样:

……
Current installation options:

   default host triple: x86_64-unknown-linux-gnu
     default toolchain: stable
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>

到这里,离成功就不远了。接着,跟据提示,输入“1”并按下回车,就会开始下载一些组件了,你会看到如下字样:

info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: latest update on 2018-08-02, rust version 1.28.0 (9634041f0 2018-07-30)
info: downloading component 'rustc'
 20.1 MiB /  68.6 MiB ( 29 %) 493.4 KiB/s ETA: 101 s

由于网络原因,你还需要等待一阵子,或者可以考虑其他办法。直到你看到如下输出:

Rust is installed now. Great!

To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH 
environment variable. Next time you log in this will be done automatically.
https://doc.rust-lang.org/cargo/index.html
To configure your current shell run source $HOME/.cargo/env

恭喜你,Rust 已经安装完成了,包括自带的 Cargo 包管理器。我们还需要将 $HOME/.cargo/bin 添加到环境变量“PATH”中,编辑 $HOME/.profile 文件,在最后面追加 export PATH="$HOME/.cargo/bin:$PATH" 就可以了,不过,如果是Ubuntu等系统,Rustup会自动给你添加环境变量。

添加完环境变量后,你需要重启一下系统,或者注销后重新登录。我们打开一个终端并输入:

$ rustc -V
rustc 1.28.0 (9634041f0 2018-07-30)

那说明没有什么问题。

我们进行第一个程序。用你喜欢的编辑器创建一个文件:

$ vim hello_world.rs

然后在文件中输入:

fn main() {
    println!("hello world!");
}

编译并运行:

$ rustc hello_world.rs
$ ./hello_world
hello world!

也可以使用Cargo:

$ cargo new hello_world --bin
Created binary (application) `hello_world` project
$ cd hello_world

注意后面的 --bin 参数,这将告诉Cargo创建一个可执行程序,而不是库。

我们可以看到,cargo 自动创建了 src 目录和 Cargo.toml 文件(类似于nodejs的package.js文件),实际上,cargo还初始化了Git仓库并创建了 .gitignore 文件。因此在这之前,你应该先安装并配置好Git。

我们打开 Cargo.toml 文件:

[package]
name = "hello_world"
version = "0.1.0"
authors = ["xxx <xxx@xxx.com>"]

[dependencies]

[package] 片段中,包含了项目的名称、版本和从Git配置中读取的作者和作者邮箱。 [dependencies] 片段中包含了项目的依赖。今后,我们还需要修改 Cargo.toml 文件。你还可以去查看 Cargo 的文档。

我们进入 src 目录中的 main.rs 文件:

cd src
vim main.rs

Cargo 已经帮我们写好了“hello world!”, 我们可以直接运行:

$ cargo run // 编译并运行
Compiling hello_world v0.1.0 (file:///home/xxx/hello_world)
    Finished dev [unoptimized + debuginfo] target(s) in 0.29s
     Running `/home/xxx/hello_world/target/debug/hello_world`
Hello, world!

或者也可以先编译,后运行:

$ cargo build // 编译
Compiling hello_world v0.1.0 (file:///home/xxx/hello_world)
    Finished dev [unoptimized + debuginfo] target(s) in 0.20s
$ ./target/debug/hello_world 运行
Hello, world!

我们会发现,项目目录下又多出了一个 Cargo.lock 文件和 target 目录, Cargo.lock 文件由Cargo维护,不需要手动修改, target 目录用于存放可执行文件和一些临时文件,也不需要我们手动去维护。部分临时文件是可以复用的,以提高下次编译时的编译速度。

我们执行 cargo runcargo build 时,默认生成的可执行文件存放在 target/debug 目录下,虽然编译速度更快,但运行较缓慢,还包含了一些调试信息,导致生成的可执行文件体积也稍大。我们可以添加 --release 参数来开启编译器优化,会在 target/release 目录下生成可执行文件,这时候编译速度较慢,但是程序的运行速度会更快。

还有一个常用命令是 cargo check ,只检查代码是否可以编译而不生成可执行文件,因而速度比 cargo build 还要快。这里要说明的是,Rust的编译器非常强大,大部分情况下,只要能够编译通过的程序,运行是没有什么问题的。

再来解释以下这段代码:

fn main() {
    println!("hello world!");
}

第一行, fn 是Rust中的一个关键字,用于定义一个函数, main 是Rust的入口函数。要注意,函数体必须包裹在 {} 中,不可省略。对换行和缩进也没有要求;

第二行, println! 调用了一个“宏”而不是函数,注意“!”,调用函数不需要“!”,当看到“!”的时候就意味着调用的是一个“宏”而不是普通的函数,在后面会介绍“宏”。"hello world!"是一个字符串,作为参数传递给 println!println! 负责将“hello world!”打印到屏幕上。

我们的目的达到了没有?然而并没有,我们需要在浏览器上输出“hello world!”,不仅仅是在终端上。不管你在此之前是否听说或了解过HTTP协议和TCP协议,目前主流浏览器通常是先跟HTTP Server建立TCP连接,再通过TCP向HTTP Server发送HTTP请求。HTTPS又在TCP和HTTP中间加了一层SSL协议,在发送HTTP请求之前,还需要进行SSL协议“握手”,我们暂且不谈HTTPS。

Rust标准库 中没有HTTP Server的实现,(Golang的同学请不要笑,Golang的标准库杂而不精,等后面你就知道Rust是多么好用了),没关系,接下来我们实现一个玩具级别的。

请看下一节!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

超预期

超预期

[美] 莱昂纳多·因基莱里、迈卡·所罗门 / 杨波 / 后浪丨江西人民出版社 / 2017-11 / 45.00元

用户体验决定产品成败,只有超预期才能赢得好口碑! 互联网大佬一致推崇的打造爆款产品及服务的核心理念 ................... ※编辑推荐※ ☆ 超预期,才有用户体验,互联网大佬一致推崇的打造爆款产品及服务的核心理念 - 周鸿祎:“什么叫用户体验?超过用户预期才叫 体验!” - 雷军:“口碑的真谛是超越用户的期望值。” - 马化腾:“用户体验,......一起来看看 《超预期》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码