欢迎大家和我一起入坑Rust,以后我就是坑主,我主要负责在前面挖坑,各位可以在上面看,有手痒的也可以和我一起挖。这个坑到底有多深?我也不知道,我是抱着有多深就挖多深的心态来的,下面我先跳了,各位请随意。

Rust简介

众所周知,在编程语言中,更易读的高级语言和控制底层资源的低级语言是一对矛盾体。Rust想要挑战这一现状,它尝试为开发者提供更好的体验的同时给予开发者控制底层细节的权限(比如内存使用)。

低级语言在开发过程中很容易出现各种细微的错误,它们难以发现但是可能影响巨大。其他大部分低级语言只能靠覆盖面更广的测试用例和经验丰富的开发者来解决这些问题。而Rust则依靠严格的编译器来杜绝这些问题。

Ps:以后会见识到Rust编译器的「厉害」

Rust的一些工具:

  • Cargo,依赖包的管理和构建工具,可以帮你减轻添加、编译和管理依赖包的痛苦

  • Rustfmt,用于保证开发者代码风格的一致性

  • Rust语言服务器支持集成IDE(我用的是IDEA)

安装Rust

如果你的操作系统是Linux或macOS,在终端执行命令

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

安装过程中的选项使用默认就好(一路回车),直到出现以下信息时,表示安装成功。

1Rust is installed now. Great!

安装脚本会自动把Rust添加到环境变量PATH中,可以重启终端或者手动执行命令使添加生效。

1$ source $HOME/.cargo/env

当然也可以添加到你的.bash_profile文件中:

1$ export PATH="$HOME/.cargo/bin:$PATH"

最后,执行以下命令来检查Rust是否安装成功

1$ rustc --version

另外,当你尝试编译Rust代码,但报了linker不可执行的错误时,你需要手动安装一个linker,C编译器通常会包含正确的linker。Rust的一些公共包也会依赖C语言代码和编译器。所以最好现在安装一个。

IDEA集成Rust

IDEA中集成Rust也很简单,只需要在Preference->Plugins中搜索Rust,安装Rust插件后重启IDEA就可以了。

Hello World

又到了经典的Hello World时间,这次我不想直接一个简单的print就结束了,我们一开始提到了Cargo是Rust依赖包的管理工具,所以我想体验一下Cargo的用法。

首先新建一个项目,可以直接用在IDEA中new project,也可以使用Cargo命令

1cargo new hello-world
2cd hello-world

新建好项目以后,它的结构长这样子

其中

  • main.rs是我们代码的入口文件

  • Cargo.toml是记录Rust元数据的文件,包括依赖。

  • Cargo.lock是记录增加依赖log的文件,不能手动修改。

接着我们在Cargo.toml文件中添加我们需要的依赖

1[dependencies]
2ferris-says = "0.1"

这时IDEA会自动安装依赖包,如果没有安装,也可以手动执行命令来安装

1cargo build

依赖安装好以后,就可以开始写代码了:

 1use ferris_says::say;2use std::io::{stdout, BufWriter};34fn main() {5    let stdout = stdout();6    let out = b"Hello World!";7    let width = 12;89    let mut writer = BufWriter::new(stdout.lock());
10    say(out, width, &mut writer).unwrap();
11}

执行结果

1----------------
2| Hello World! |
3----------------
4              \
5               \
6                  _~^~^~_
7              \) /  o o  \ (/
8                '_   -   _'
9                / '-----' \

没错,这是一个小螃蟹,至于它是谁,来看看官方解释

Ferris is the unofficial mascot of the Rust Community. Many Rust programmers call themselves “Rustaceans,” a play on the word “crustacean.” We refer to Ferris with the pronouns “they,” “them,” etc., rather than with gendered pronouns.

Ferris is a name playing off of the adjective, “ferrous,” meaning of or pertaining to iron. Since Rust often forms on iron, it seemed like a fun origin for our mascot’s name!

You can find more images of Ferris on http://rustacean.net/.

关于toml文件可能有些读者不太熟悉(其实我自己也不太熟),这里简单介绍一下吧,它的全称是「Tom's Obvious, Minimal Language」,是一种配置文件格式。它的语义是比较明显的,因此易于阅读。同时格式可以明确的映射到hash表,所以也可以被多种语言轻松解析。

GitHub地址是:https://github.com/toml-lang/toml

有兴趣的同学可以做更深入的了解。

后记

至此,我确信自己已经跳进来了,有想跟进的朋友记得关注我哦。

扫码关注

有趣的灵魂在等你

Rust入坑指南:坑主驾到相关推荐

  1. python3 supervisor_python3-django+uwsgi+supervisor+nginx跳坑指南(记录)

    首先运行django项目:在项目目录内: python manage.py runserver 0.0.0.0:8000 外部服务器访问:http://www.xxx.com:8000/ 可以正常运行 ...

  2. Rust入坑指南:核心概念

    如果说前面的坑我们一直在用小铲子挖的话,那么今天的坑就是用挖掘机挖的. 今天要介绍的是Rust的一个核心概念:Ownership.全文将分为什么是Ownership以及Ownership的传递类型两部 ...

  3. Rust 入坑指南:鳞次栉比 | CSDN 博文精选

    作者 | Jackyzhe 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 很久没有挖Rust的坑啦,今天来挖一些排列整齐的坑.没错,就是要介绍一些集合类型的数据类型."鳞次栉 ...

  4. Rust入坑指南:齐头并进(上)

    我们知道,如今CPU的计算能力已经非常强大,其速度比内存要高出许多个数量级.为了充分利用CPU资源,多数编程语言都提供了并发编程的能力,Rust也不例外. 聊到并发,就离不开多进程和多线程这两个概念. ...

  5. 丅rust是什么意思_Rust入坑指南:亡羊补牢

    如果你已经开始学习Rust,相信你已经体会过Rust编译器的强大.它可以帮助你避免程序中的大部分错误,但是编译器也不是万能的,如果程序写的不恰当,还是会发生错误,让程序崩溃.所以今天我们就来聊一聊Ru ...

  6. Rust入坑指南:朝生暮死

    今天想和大家一起把我们之前挖的坑再刨深一些.在Java中,一个对象能存活多久全靠JVM来决定,程序员并不需要去关心对象的生命周期,但是在Rust中就大不相同,一个对象从生到死我们都需要掌握的很清楚. ...

  7. Rust入坑指南:亡羊补牢

    如果你已经开始学习Rust,相信你已经体会过Rust编译器的强大.它可以帮助你避免程序中的大部分错误,但是编译器也不是万能的,如果程序写的不恰当,还是会发生错误,让程序崩溃.所以今天我们就来聊一聊Ru ...

  8. Rust入坑指南:鳞次栉比

    很久没有挖Rust的坑啦,今天来挖一些排列整齐的坑.没错,就是要介绍一些集合类型的数据类型."鳞次栉比"这个标题是不是显得很有文化? 在Rust入坑指南:常规套路一文中我们已经介绍 ...

  9. rust的矿坑_Rust入坑指南:鳞次栉比

    很久没有挖Rust的坑啦,今天来挖一些排列整齐的坑.没错,就是要介绍一些集合类型的数据类型."鳞次栉比"这个标题是不是显得很有文化? 在Rust入坑指南:常规套路一文中我们已经介绍 ...

  10. Rust入坑指南:千人千构

    坑越来越深了,在坑里的同学让我看到你们的双手! 前面我们聊过了Rust最基本的几种数据类型.不知道你还记不记得,如果不记得可以先复习一下.上一个坑挖好以后,有同学私信我说坑太深了,下来的时候差点崴了脚 ...

最新文章

  1. flutter ios启动白屏_Flutter技术架构概览
  2. linux dhcp 论文,毕业论文—基于linux的dhcp服务器配置.doc
  3. r语言 分类变量 虚拟变量_R语言中的变量
  4. DetachedCriteria和Criteria的使用方法
  5. Pyalgotrade量化交易回测框架
  6. 三年Java,真的卷不动了……
  7. 先睹为快!第十一届数据技术嘉年华七大看点全揭秘
  8. 3.6 Batch Norm 为什么奏效?
  9. 【Shell系列】之shell脚本中常用句法
  10. ubuntu16.04安装pycharm,并设置快捷启动方式
  11. 忘记mysql管理密码怎么办?
  12. 阅读《黑客与画家》有感——Hackers and Painters
  13. java selenium2_Selenium2(webdirver)入门之环境搭建(Java版)
  14. 含泪整理上万射击枪战游戏源码素材,你想要的这里都有!
  15. 深入Guerrilla Games解密次世代开山大作《杀戮地带暗影坠落》(The technology of Killzone Shadow Fall)
  16. AI算法可帮助因气候变化而流离失所的数百万难民找到新家了!
  17. html 背景图片比例,CSS实现响应式全屏背景图+用CSS3实现全屏按比例缩放背景图片...
  18. java中retry的使用
  19. networking /etc/network/interfaces 笔记221102
  20. 网易云 -微信小程序-vue

热门文章

  1. 基于Jquery的浏览器打印插件
  2. KIW-AL10(全网通)线刷+卡刷 {救砖| 降级| 回官} 实用教程
  3. 测绘学概论第三版——2 大地测量学
  4. portal是什么?
  5. 计算机英语课程建议,英语课程标准(实施建议)
  6. linux改成微内核,Linux内核支持可以裁减的功能,因此它属于微内核架构。()
  7. 目前最稳定的Win10 21H2正式版系统 V2022
  8. NBUT - 1457 Sona (莫队)
  9. 书籍《大象–thinking in UML》
  10. Java日期中YYYY与yyyy的区别