Rust个人学习之hello world
rust 作为新晋热门语言,作为软件研发工作者不得不开启新一轮的学习与思考,今天就考虑拿一本书作为入门,快速进入rust的世界。
既然是接触的一门新的编程语言,自然绕不过向这个美好的世界打声招呼,今天这篇记录目标就是能够使用rust打声招呼。
我选择的开发环境是fedora 37(首次尝试termux),首先通过命令查看环境是否有rust
[root@localhost ~]# rustc --version
rustc 1.64.0 (Fedora 1.64.0-1.fc37)
[root@localhost ~]#
如果命令回显中包含了上述内容,就表示已经成功安装rust环境,如果提示找不到rustc,则需要进行一下安装,fedora上可以直接使用dnf进行安装
[root@localhost ~]# dnf install rust
Last metadata expiration check: 12:42:13 ago on Sat Dec 31 00:59:02 2022.
Package rust-1.64.0-1.fc37.aarch64 is already installed.
Dependencies resolved.
Nothing to do.
由于我本地已完成了安装,所以显示是上述内容。如果已经完成了rust编译环境的安装,我们就可以开始向世界打招呼了。在rust的世界中,需要后缀为rs的文件作为承载,我们可以在名为hello_world 目录中建立一个main.rs文件,内容如下:
[root@localhost code]# tree
.
└── hello_world└── main.rs1 directory, 1 file
[root@localhost code]# cat hello_world/main.rs
fn main() {println!("Hello World");
}
这样我们就为我们自己的rust世界写好了一个打招呼的内容,因为rust为预编译语言,所以需要一个类似C语言中的gcc的工具,在rust中有一个叫做rustc的工具完美的继承了gcc的使用特点,在Linux下通过rustc就可以生成一个二进制可执行文件
[root@localhost hello_world]# ls
main.rs
[root@localhost hello_world]# rustc main.rs
[root@localhost hello_world]# ls
main main.rs
[root@localhost hello_world]#
执行生成的二进制文件main,就能看到我们的“hello world”了。
当然这是一个伟大的进步,说明我们进入到了rust世界,在rust世界中还有个很好用的工具叫做cargo,作为初学者(当然是有其他语言基础的),这个工具初步感受还是很好用的,特别是针对较为复杂的项目来说。
首先我们来说一下cargo工具的安装,可以在环境中执行如下命令确认是否已经安装了cargo环境
[root@localhost code]# cargo --version
cargo 1.64.0
与rust类似,因为我本地已经安装了cargo,所以会有版本内容的提示,当提示找不到命令时可以通过dnf命令(fedora环境中)进行安装,方法参照rust安装,不再赘述。这个工具哪里好呢?具体讲几个命令吧。
创建项目工程,比如我们上面通过rustc进行编译的hello_world项目,是通过命令行手动创建了一个“hello_world”的目录,然后再在目录下手动创建一个入口函数文件main.rs,当我们有了cargo,可以直接通过cargo new projectname 进行创建,比如我们创建一个hello_cargo项目
[root@localhost code]# cargo new hello_cargoCreated binary (application) `hello_cargo` package
[root@localhost code]# tree
.
├── hello_cargo
│ ├── Cargo.toml
│ └── src
│ └── main.rs
通过这一个命令就自动给我们创建了一个名为hello_cargo的项目目录,在目录中自动创建了一个toml配置文件和一个带有入口函数文件的src目录,当然这些动作我们可以不用cargo工具手动创建也能达到同样的效果,但是……它麻烦呀,另外cargo还有几个很方便实用的功能。
编译能力: cargo build
[root@localhost code]# cd hello_cargo/
[root@localhost hello_cargo]# tree
.
├── Cargo.toml
└── src└── main.rs1 directory, 2 files
[root@localhost hello_cargo]# cargo buildCompiling hello_cargo v0.1.0 (/root/code/hello_cargo)Finished dev [unoptimized + debuginfo] target(s) in 0.91s
[root@localhost hello_cargo]# tree
.
├── Cargo.lock
├── Cargo.toml
├── src
│ └── main.rs
└── target├── CACHEDIR.TAG└── debug├── build├── deps│ ├── hello_cargo-b1a1a9be7abc87a6│ └── hello_cargo-b1a1a9be7abc87a6.d├── examples├── hello_cargo├── hello_cargo.d└── incremental└── hello_cargo-1rx4z42s1cnlo├── s-ggulv90t9p-1ae9bu8-37h33e08admk5│ ├── 21ceo5hijncl7ici.o│ ├── 4a9no1imhf16qcuh.o│ ├── 4fdimw0i850r0ya.o│ ├── 5733aszpvhlqrpmw.o│ ├── 598lt5j8okchcuhd.o│ ├── 7fgygjsv6lmmyu6.o│ ├── dep-graph.bin│ ├── query-cache.bin│ ├── t9g9jafa1mh161j.o│ ├── work-products.bin│ └── wr0ux65dplvcg96.o└── s-ggulv90t9p-1ae9bu8.lock9 directories, 20 files
可以看到,通过cargo build命令工具会帮助我们自动在debug目录生成一个hello_cargo的二进制文件,可以更方便开发人员进行debug,而当我们需要发布的时候我们在build后加上 --release就可以生成发布的版本了,具体差异可以自行实验一下,通过--release生成的二进制文件是在release目录下的。
检查能力:cargo check
从字面意思理解,这个命令意味着检查能力,主要是快速检查语法错误,在hello world这种简单的源码中可能作用不大,但是在大型的项目中协助开发人员检查是否存在语法错误,可以节省大量的编译时间
[root@localhost hello_cargo]# cargo checkChecking hello_cargo v0.1.0 (/root/code/hello_cargo)
error: expected expression, found `;`--> src/main.rs:2:31|
2 | println!("Hello, world!")>;| ^ expected expressionerror: could not compile `hello_cargo` due to previous error
[root@localhost hello_cargo]#
运行能力: cargo run
这个命令就类似于npm run,直接运行的能力(不用先编译,然后再手动执行了)
[root@localhost hello_cargo]# cargo runCompiling hello_cargo v0.1.0 (/root/code/hello_cargo)Finished dev [unoptimized + debuginfo] target(s) in 0.67sRunning `target/debug/hello_cargo`
Hello, world!
以上就可以在一个环境中把rust环境跑起来了,这篇内容的目标也就达到了。
Rust个人学习之hello world相关推荐
- rust - trait学习
通过对<Rust 程序设计语言>,<通过例子学 Rust 中文版>以及令狐一冲老师对相关知识点的学习总结而成. rust - trait学习 1 trait 的基本含义 2 定 ...
- Rust太难?那是你没看到这套Rust语言学习万字指南!
摘要:从开发环境.语法.属性.内存管理和Unicode等五部分,为你带来一份详细的Rust语言学习的精华总结内容. 一.Rust开发环境指南 1.1 Rust代码执行 根据编译原理知识,编译器不是直接 ...
- Rust语言学习大纲
Time: 20190919 接下来,我们将循着这个足迹来学习了解Rust语言,实战Rust语言,希望对你也有一定的帮助~ 2019.10 Update: 第一届PAT算法直播课培训班招募帖,欢迎点击 ...
- Rust Reqwest 学习
reqwest 0.11.4 学习 以应用为主, 在实践中体验 rust 的强大和快捷. 首先以 Web 开发为主题,学习一个强大的 HTTP 客户端库 reqwest . Crate reqwest ...
- Rust 闭包学习 (Fn/FnMut/FnOnce)
文章目录 闭包作为参数 闭包作为结构体属性 异步使用闭包 项目地址 学习 Rust 闭包记录 闭包作为参数 fn main() {parameter_is_callback_t(Box::new(|| ...
- Rust结伴学习 — 前言
前言 本系列旨在记录自己学习Rust的过程,也希望借此方式激励自己能够坚持下去,内容可能比较简单,希望大家见谅,也希望大家可以督促我坚持下去~~ 为什么学习Rust 没有很特别的原因,只是因为Rust ...
- rust入门学习指南
背景介绍 已入职新公司三个月,rust技能从0开始,到现在已经可以熟练编写各种功能了. 这里分享一下笔者的rust学习路线. 在学习rust之前,笔者已经有三年多的C++开发经验,有一定的Python ...
- rust军用船指令_Rust基础学习笔记(五):Cargo与Crates.io
最近复习鸽了几天,今天继续学,希望在考试之前搞定这个官方文档 もうダメ.... 本章学习Cargo和Crates.io相关,内容有下: 自定义构建 向crates.io提交libraries 利用工作 ...
- rust 入门笔记: rustlings(推荐一些学习rust语法的一些非常好的小练习)
rustlings 推荐一个学习rust非常好的repo: Small exercises to get you used to reading and writing Rust code! - 学习 ...
最新文章
- 人生的路上,要懂得坚强
- jdbc mysql查询显示图片_在实现JDBC时如何显示存储引擎-MySQL CONNECTION查询?
- 近年ERP软件公司腾飞的缘由
- 服务器上tomcat修改内存,修改Tomcat运行内存
- 在linux 下怎么查看服务器的cpu和内存的硬件信息
- 一样是做鸭,绝味与周黑鸭的利润为何相差那么大?
- vux Cell组件
- (123)FPGA面试题-介绍低速接口(UART、IIC、SPI),SPI有几根线,每根线的作用?(三)
- 找到问题比解决问题更重要
- LL(1)文法与其对应的FOLLOW,SELECT和FIRST集
- 关于滚动条ScrollView
- Python __init__.py 作用详解
- React入门---组件-4
- java 数据库 程序_用java编写数据库程序的一般步骤
- 如何将cad导成jpg图片格式?
- 表单必填标星_laravel-admin必填项加星号
- ylbtech-dbs:ylbtech-4,PurpleHouse(房地产楼盘销售系统)
- UVA 12304 2D Geometry 110 in 1! 六个直线与圆的问题+经典几何
- AndroidStudio不停地Indexing问题解决
- 使用着色器模拟雾效果