Rust入坑指南:坑主驾到

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

Rust简介

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

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

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

Rust的一些工具:

  • Cargo,依赖包的管理和构建工具,可以帮你减轻添加、编译和管理依赖包的痛苦
  • Rustfmt,用于保证开发者代码风格的一致性
  • Rust语言服务器支持集成IDE(我用的是IDEA)

安装Rust

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

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

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

Rust is installed now. Great!

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

$ source $HOME/.cargo/env

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

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

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

$ 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命令

cargo new hello-world
cd hello-world

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

其中

  • main.rs是我们代码的入口文件
  • Cargo.toml是记录Rust元数据的文件,包括依赖。
  • Cargo.lock是记录增加依赖log的文件,不能手动修改。

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

[dependencies]
ferris-says = "0.1"

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

cargo build

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

use ferris_says::say;
use std::io::{stdout, BufWriter};

fn main() {
    let stdout = stdout();
    let out = b"Hello World!";
    let width = 12;

    let mut writer = BufWriter::new(stdout.lock());
    say(out, width, &mut writer).unwrap();
}

执行结果

----------------
| Hello World! |
----------------
                                               _~^~^~_
              \) /  o o  \ (/
                '_   -   _'
                / '-----' \

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

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

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

后记

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

原文地址:https://www.cnblogs.com/Jackeyzhe/p/11657966.html

时间: 2024-10-09 23:55:10

Rust入坑指南:坑主驾到的相关文章

Rust入坑指南:亡羊补牢

如果你已经开始学习Rust,相信你已经体会过Rust编译器的强大.它可以帮助你避免程序中的大部分错误,但是编译器也不是万能的,如果程序写的不恰当,还是会发生错误,让程序崩溃.所以今天我们就来聊一聊Rust中如何处理程序错误,也就是所谓的"亡羊补牢". 基础概念 在编程中遇到的非正常情况通常可以分为三类:失败.错误.异常. Rust中用两种方式来消除失败:强大的类型系统和断言. 对于类型系统,熟悉Java的同学应该比较清楚.例如我们给一个接收参数为int的函数传入了字符串类型的变量.这是

C语言入坑指南-被遗忘的初始化

前言 什么是初始化?为什么要初始化?静态变量和局部变量的初始化又有什么区别?实际应用中应该怎么做?本文将一一回答这些问题. 什么是初始化 初始化指的是对数据对象或者变量赋予初始值.例如: int value = 8; //声明整型变量并初始化为8int arr[] = {1,2,3}; //声明整型数组arr,并初始化其值为1,2,3 为什么要初始化 我们来看一个示例程序.test0.c程序清单如下: #include <stdio.h>#include <stdlib.h>int

eclipse中导入外部包却无法查看对应源码或Javadoc的 入坑指南

eclipse中导入外部包却无法查看对应源码或Javadoc的 入坑指南 出现这个错误的原因是,你虽然导入了.jar包,但没有配置对应的Javadoc或源码路径,所以在编辑器中无法查看源 码和对应API.接下来我们一起解决这个问题... 在项目名称上右击→ 新建→ 文件夹→ 文件名写lib→ 点击完成 然后把你下载的jar包,复制黏贴到这个lib文件夹 右击lib中的源码包→ 构建路径→ 添加至构建路径,自动生成一个"引用的库" 右击 "引用的库" 中的jar包→

高速信号要避免紧挨平行布线–PCB Layout 跳坑指南

高速信号要避免紧挨平行布线–PCB Layout 跳坑指南 高频高速PCB设计 by xfire PCB Layout 跳坑指南 高速电路布线要注意信号线间近距离平行走线所引起的串扰,若无法避免平行布线,可在平行信号线的相邻层铺大面积的"地铜"来减少线间串扰.相邻层之间的高速信号走线的方向也需要尽量做到相互垂直.

PCB走线角度选择 — PCB Layout 跳坑指南

PCB走线角度选择 - PCB Layout 跳坑指南 PCB设计技巧 by xfire PCB Layout 跳坑指南 现在但凡打开SoC原厂的PCB Layout Guide,都会提及到高速信号的走线的拐角角度问题,都会说高速信号不要以直角走线,要以45度角走线,并且会说走圆弧会比45度拐角更好.狮屎是不是这样?PCB走线角度该怎样设置,是走45度好还是走圆弧好?90度直角走线到底行不行?这是老wu经常看见广大 PCB Layout 拉线菌热议的话题. 大家开始纠结于pcb走线的拐角角度,也

Kubernetes Fluentd+Elasticsearch+Kibana日志搭建的填坑指南

在初步完成Kubernetes集群架构的建立后,通过搭建一些监控组件,我们已经能够实现 图形化的监控每个node,pod的状态信息和资源情况 通过scale进行replicateSet的扩展和伸缩 通过kubectl logs 或dashboard去查看每个Pod的运行日志 但是,在分布式架构中节点的规模往往是很庞大的,一个典型的生产环境可能有几十上百个minion节点,在这种情况下就需要建立一套集中的日志监控和管理系统,在本人前期的思考中,也想通过volumn外挂到存储的方式实现weblogi

erlang开发经验谈:防坑指南

任何语言在使用中都会遇到这样那样的问题,erlang也是.这里整理下我遇到的一些问题,避免继续踩坑.说实话,"防坑指南"这个标题有点过于标新立异,不过还是希望能引起重视,避免在实际开发中重复犯这些问题. '--' 运算 1> [1,2,3,4] -- [1] -- [2]. [2,3,4] 算是erlang经典的问题了.这是从后面算起的,先算 [1] -- [2] ,得到 [1] 后被 [1,2,3,4] --,最后得到 [2,3,4] 如果是 ++ 也是一样的,从后面开始算起,

Yii2.0 restfut接口认证错误出坑指南

测试Yii2.0即接口认证功能(出坑指南)://认证 bindValTap: function () {var page = this;wx.request({url: 'http://apitest.test/invmembers?access-token=rg1v5BF7OBGE4Bze562wZSUfiStakUK_',header: {'content-type': 'application/json'},method: 'get',data: {'per-page': 6,// pag

自如租房避坑指南

[自如租房避坑指南] 在北京工作了两年半的时间里,由于工作原因换了3次房,租的都是 自如的房子,选择自如的原因是因为自如省事,该有的东西都有.但是也有些比较坑的地方,这里列举一下,租房的时候需要注意,这样能让你租到一个比较顺心的房子. 不要完全相信自如APP上面标的房屋面积 在我租房的过程中我看过一些自如的房子,发现自如有些房屋的面积是虚标的,有些标示8平米的房子实际可能只有6平米,有时间最好还是实地去看一下,感觉面积合适再租 价格特别便宜的要注意(相对该房子周边来说) 有时候你在自如上看到特别

安装Seafile Server 7.1.3 不完全避坑指南

容易踩的坑 解决依赖关系是安装seafile server的第一个坑. 官方提供的安装包,大部分依赖都已经打包在包里了, 只有seahub依赖的部分Python包,因为使用了C语言,编译安装时必须和Python的版本对应(这也是之前Windows版本必须安装指定版本python的原因),由于无法预知客户端的Python版本,所以无法包含在安装包中. MySQL/Mariadb数据库配置是第二个坑. 有些系统安装的MySQL/Mariadb数据库,默认配置是不允许root用户通过网络连接服务器的,