内容简介:欢迎回来!“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 run
或 cargo 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是多么好用了),没关系,接下来我们实现一个玩具级别的。
请看下一节!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- ExcelUtil 1.5.3 发布,新增流导出支持直接输出到浏览器中,就是这么勤劳。
- 2. Python中的基本输入、输出、格式化输出
- console 输出对象
- 多种格式数据输出
- Java输入输出挂
- Golang 格式输出符号
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。