专栏简介:本专栏作为Rust语言的入门级的文章,目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言,虽然历史没有C++、和python历史悠远,但是它的优点可以说是非常的多,既继承了C++运行速度,还拥有了Java的内存管理,就我个人来说,还有一个优点就是集成化的编译工具cargo,语句风格和C++极其相似,所以说我本人还是比较喜欢这个语言,特此建立这个专栏,作为学习的记录分享。
日常分享:每天努力一点,不为别的,只是为了日后,能够多一些选择,选择舒心的日子,选择自己喜欢的人!
目录
前言
环境配置
windows环境安装
测试
Linux/macos安装
Ubuntu安装
第一步
第二步
Rust的删除
更新与卸载
Hello,world!
Hello,Cargo!
使用cargo创建项目
Cargo.toml文件
src/main.rs
构建并运行Cargo项目
cargo build命令
cargo run命令
cargo check命令
release构建——发布
总结
Rust 程序设计语言的本质实际在于 赋能(empowerment):无论你现在编写的是何种代码,Rust 能让你在更为广泛的编程领域走得更远,写出自信。这是官网上的一句话,这句话也涵盖了Rust语言的未来广泛的市场,虽然说在中国还没有进行大规模的普及,但是在国外却有了很大的市场,所以说,Rust语言在未来的市场不会太差。所以,从现在开始就可以进入Rust语言的学习。
点击官网网址,该网页会根据你使用的操作系统来给出界面,windows界面下只需要根据你电脑的位数选择安装包下载,然后点击下载好的setup程序,当然,Rust的安装必须要在c的环境里,你要确保你的电脑上有gcc或者isual studio等环境,点击程序后会出现一个蓝色或者黑色的终端,输入1,按Enter,安装完毕,windows下面安装Rust会自带Cargo,所以不再需要单独下载。
打开电脑终端,输入rustc --version命令行,如果出现版本号,代表安装成功。
安装下面的命令,在终端中输入,按照提示完成安装:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Ubuntu虽然也是Linux系统,但是用户很多,很多初学者都不会安装,我给出我的安装过程:
打开终端,输入命令:
sudo apt install rustc -y
打开终端,输入:
sudo apt install cargo
安装cargo。
sudo apt remove rustc
windows下是通过restup安装的,那么卸载和安装均可以使用工具链Rustup,更新到最新版本的命令行:
rustup update
卸载Rust和rustup:
rustup self uninstall
至此,环境安装完毕,开始你的第一条代码:
每门编程语言的第一条语句“Hello,world!”,我们在这里也来创建一个Hello,world的程序。
利用终端或者直接创建一个文件夹,然后创建一个以.rs为后缀的文件,然后打开,开始输入以下的语句:
fn main(){
println!("Hello,world!");
}
如果是编译器的话,可以直接使用编译器进行编译,也可以使用终端,输入rustc 文件名.rs命令。然后会得到一个可执行,windows上应该得到的是.exe文件,Linux下会得到二进制可执行,Linux下执行./可执行文件名字,windows下可以直接点击.exe文件。至此,第一条程序创建完成,但是这样太过复杂,有没有一种简单的方式?
Cargo 是 Rust 的构建系统和包管理器。所以利用cargo进行编译和执行,会大大减轻我们的工作量。为了确保cargo能够使用,先要确保cargo已经扎un安装。
打开终端,输入命令行:cargo --version.
如果出现了版本号,安装成功,否则,需要单独安装。
我们使用Cargo创建新项目,然后看看与上面创建的“Hello,world!”项目有什么不同,在你放置代码的目录下,打开终端,输入:
$ cargo new hello_cargo
$ cd hello_cargo
第一行命令创建了hello_cargo的项目,打开这个项目,你会发现多了几个文件,
进入 hello_cargo 目录并列出文件。将会看到 Cargo 生成了两个文件和一个目录:一个 Cargo.toml 文件,一个 src 目录,以及位于 src 目录中的 main.rs 文件。
这也会在 hello_cargo 目录初始化了一个 git 仓库,以及一个 .gitignore 文件。如果在一个已经存在的 git 仓库中运行 cargo new
,则这些 git 相关文件则不会生成;可以通过运行 cargo new --vcs=git
来覆盖这些行为。
[package]
name = "Rust"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
这个文件使用 TOML (Tom's Obvious, Minimal Language) 格式,这是 Cargo 配置文件的格式。
第一行,[package]
,是一个片段(section)标题,表明下面的语句用来配置一个包。随着我们在这个文件增加更多的信息,还将增加其他片段(section)。
接下来的三行设置了 Cargo 编译程序所需的配置:项目的名称、项目的版本以及要使用的 Rust 版本。附录 E 会介绍 edition
的值。
最后一行,[dependencies]
,是罗列项目依赖的片段的开始。在 Rust 中,代码包被称为 crates。这个项目并不需要其他的 crate,不过在第二章的第一个项目会用到依赖,那时会用得上这个片段。
fn main() {
println!("Hello, world!");
}
Cargo 为你生成了一个 “Hello, world!” 程序,正如我们之前编写的示例 1-1!目前为止,我们的项目与 Cargo 生成项目的区别是 Cargo 将代码放在 src 目录,同时项目根目录包含一个 Cargo.toml 配置文件。
Cargo 期望源文件存放在 src 目录中。项目根目录只存放 README、license 信息、配置文件和其他跟代码无关的文件。使用 Cargo 帮助你保持项目干净整洁,一切井井有条。
如果没有使用 Cargo 开始项目,比如我们创建的 Hello,world! 项目,可以将其转化为一个 Cargo 项目。将代码放入 src 目录,并创建一个合适的 Cargo.toml 文件。
执行该命令,会出现一些警告和编译成功的通知,如下面:
Compiling Rust v0.1.0 (/home/ddb/文档/Hello)
warning: variable does not need to be mutable
--> src/main.rs:3:5
|
3 | let mut s=String::from("Hello,world!");
| ----^
| |
| help: remove this `mut`
|
= note: `#[warn(unused_mut)]` on by defaultwarning: function `gives_ownership` is never used
--> src/main.rs:9:4
|
9 | fn gives_ownership()->String {
| ^^^^^^^^^^^^^^^
|
= note: `#[warn(dead_code)]` on by defaultwarning: function `takes_and_gives_back` is never used
--> src/main.rs:13:4
|
13 | fn takes_and_gives_back(a_string: String)->String {
| ^^^^^^^^^^^^^^^^^^^^warning: function `calculate_length` is never used
--> src/main.rs:21:4
|
21 | fn calculate_length(s: &String) -> usize {
| ^^^^^^^^^^^^^^^^warning: crate `Rust` should have a snake case name
|
= note: `#[warn(non_snake_case)]` on by default
= help: convert the identifier to snake case: `rust`warning: variable `worldIndex` should have a snake case name
--> src/main.rs:4:5
|
4 | let worldIndex=first_letter(&s);
| ^^^^^^^^^^ help: convert the identifier to snake case: `world_index`warning: `Rust` (bin "Rust") generated 6 warnings
Finished dev [unoptimized + debuginfo] target(s) in 0.70s
这个命令会创建一个可执行文件 target/debug/hello_cargo (在 Windows 上是 target\debug\hello_cargo.exe),而不是放在目前目录下。由于默认的构建方法是调试构建(debug build),Cargo 会将可执行文件放在名为 debug 的目录中。
cargo run
在一个命令中可以同时编译并运行生成的可执行文件,如果你编译过后没有进行改动,那么就不会重新编译,而是直接运行,所以说这个命令非常的简洁。
该命令快速检查代码确保其可以编译,但并不产生可执行文件,该命令主要是用于检查代码是否出现错误,而不会编译,可以方便操作者检查代码。
使用 Cargo 的一个额外的优点是,不管你使用什么操作系统,其命令都是一样的。所以从现在开始本书将不再为 Linux 和 macOS 以及 Windows 提供相应的命令。
当项目最终准备好发布时,可以使用 cargo build --release
来优化编译项目。这会在 target/release 而不是 target/debug 下生成可执行文件。这些优化可以让 Rust 代码运行的更快,不过启用这些优化也需要消耗更长的编译时间。这也就是为什么会有两种不同的配置:一种是为了开发,你需要经常快速重新构建;另一种是为用户构建最终程序,它们不会经常重新构建,并且希望程序运行得越快越好。如果你在测试代码的运行时间,请确保运行 cargo build --release
并使用 target/release 下的可执行文件进行测试。
本节主要是讲解一下rust的环境配置以及一些命令,我个人建议是多使用终端进行操作,无论是Linux还是macos,windows系统,cargo的命令都是一样的,所以不再需要记很多的命令。这也是我推荐使用cargo的原因。本节的内容就到此结束,下一节我们正式开始Rust编程语言的学习。