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相关推荐

  1. rust - trait学习

    通过对<Rust 程序设计语言>,<通过例子学 Rust 中文版>以及令狐一冲老师对相关知识点的学习总结而成. rust - trait学习 1 trait 的基本含义 2 定 ...

  2. Rust太难?那是你没看到这套Rust语言学习万字指南!

    摘要:从开发环境.语法.属性.内存管理和Unicode等五部分,为你带来一份详细的Rust语言学习的精华总结内容. 一.Rust开发环境指南 1.1 Rust代码执行 根据编译原理知识,编译器不是直接 ...

  3. Rust语言学习大纲

    Time: 20190919 接下来,我们将循着这个足迹来学习了解Rust语言,实战Rust语言,希望对你也有一定的帮助~ 2019.10 Update: 第一届PAT算法直播课培训班招募帖,欢迎点击 ...

  4. Rust Reqwest 学习

    reqwest 0.11.4 学习 以应用为主, 在实践中体验 rust 的强大和快捷. 首先以 Web 开发为主题,学习一个强大的 HTTP 客户端库 reqwest . Crate reqwest ...

  5. Rust 闭包学习 (Fn/FnMut/FnOnce)

    文章目录 闭包作为参数 闭包作为结构体属性 异步使用闭包 项目地址 学习 Rust 闭包记录 闭包作为参数 fn main() {parameter_is_callback_t(Box::new(|| ...

  6. Rust结伴学习 — 前言

    前言 本系列旨在记录自己学习Rust的过程,也希望借此方式激励自己能够坚持下去,内容可能比较简单,希望大家见谅,也希望大家可以督促我坚持下去~~ 为什么学习Rust 没有很特别的原因,只是因为Rust ...

  7. rust入门学习指南

    背景介绍 已入职新公司三个月,rust技能从0开始,到现在已经可以熟练编写各种功能了. 这里分享一下笔者的rust学习路线. 在学习rust之前,笔者已经有三年多的C++开发经验,有一定的Python ...

  8. rust军用船指令_Rust基础学习笔记(五):Cargo与Crates.io

    最近复习鸽了几天,今天继续学,希望在考试之前搞定这个官方文档 もうダメ.... 本章学习Cargo和Crates.io相关,内容有下: 自定义构建 向crates.io提交libraries 利用工作 ...

  9. rust 入门笔记: rustlings(推荐一些学习rust语法的一些非常好的小练习)

    rustlings 推荐一个学习rust非常好的repo: Small exercises to get you used to reading and writing Rust code! - 学习 ...

最新文章

  1. 人生的路上,要懂得坚强
  2. jdbc mysql查询显示图片_在实现JDBC时如何显示存储引擎-MySQL CONNECTION查询?
  3. 近年ERP软件公司腾飞的缘由
  4. 服务器上tomcat修改内存,修改Tomcat运行内存
  5. 在linux 下怎么查看服务器的cpu和内存的硬件信息
  6. 一样是做鸭,绝味与周黑鸭的利润为何相差那么大?
  7. vux Cell组件
  8. (123)FPGA面试题-介绍低速接口(UART、IIC、SPI),SPI有几根线,每根线的作用?(三)
  9. 找到问题比解决问题更重要
  10. LL(1)文法与其对应的FOLLOW,SELECT和FIRST集
  11. 关于滚动条ScrollView
  12. Python __init__.py 作用详解
  13. React入门---组件-4
  14. java 数据库 程序_用java编写数据库程序的一般步骤
  15. 如何将cad导成jpg图片格式?
  16. 表单必填标星_laravel-admin必填项加星号
  17. ylbtech-dbs:ylbtech-4,PurpleHouse(房地产楼盘销售系统)
  18. UVA 12304 2D Geometry 110 in 1! 六个直线与圆的问题+经典几何
  19. AndroidStudio不停地Indexing问题解决
  20. 使用着色器模拟雾效果

热门文章

  1. Linux必会100个命令(二十六)tar
  2. Flask实践——microblog 环境搭建 helloword (1)
  3. Python(8)面向对象编程
  4. 青龙面板重复任务清理脚本
  5. JavaScript实现音频倒放----基于Array.prototype.reverse()
  6. 打印由26个英文字母组成的菱形
  7. 最长回文子序列 java
  8. 微博伤感语录分享:总有那么一个人,是你的念想
  9. CAD制图初学入门之常见的CAD打印设置汇总
  10. AVC 报错问题示例以及解决方案