Rust从入门到精通-01-简介
1、rust 从哪里来
Rust语言在2006年作为 Mozilla 员工 Graydon Hoare 的私人项目出现,而 Mozilla 于 2009 年开始赞助这个项目。
第一个有版本号的 Rust 编译器于2012 年 1 月发布。Rust 1.0 是第一个稳定版本,于 2015年5月15日发布。
Graydon Hoare 是一个职业编程语言工程师,其日常工作就是给其他语言开发编译器和工具集,但是不会参与语言本身的设计,由于这种工作性质,他接触过很多编程语言,了解各种语言的优缺点。
比如 c 和 c++,性能比较好,但是类型系统和内存都不太安全;一些拥有 GC 的语言,比如Java、golang、kotlin等,内存是安全的,但是性能却比较低。
一天下班,他回到公寓发现电梯居然坏了,而且不是第一次了,他住在 21 楼,只能硬着头皮爬楼梯。
像电梯这种嵌入式设备里,软件大多是用 C 或 C++ 写的。这类语言运行快、占空间小,但也容易出错,尤其是容易引入“内存漏洞”——只要处理不当,程序就会直接崩溃。
于是 Graydon Hoare 萌生了自己开发一门语言的想法,这门语言就是 Rust。
灵感来自一种非常顽强的真菌——在他眼里,这个名字意味着“为生存而过度设计”。
2、rust logo

Rust 的 logo 承载了创造者对该语言的期望:
①、Rust 这个单词是由 Trust 和 Robust 组合而成,暗示了信任(Trust)和鲁棒性(或健壮性、Robust)。
②、Rust Logo 的形状与一种叫做锈菌的真菌相似,这种真菌生命力非常顽强,在其生命周期内可产生多达 5 种孢子类型,这 5 种生命形态还可以相互转化。
也就是鲁棒性(健壮性)非常强。其 Logo 上面的 5 个小圆孔,与锈菌的 5 种生命形态相对应,也在暗示 Rust 语言超强的健壮性。
3、rust 是什么
在 rust 官网:https://www.rust-lang.org/ ,有这样一句醒目的话:

Rust 是一门赋予每个人构建可靠且高效软件能力的语言。
Rust 是一门系统级编程语言,有三大特点:
①、运行快且内存利用率高
②、可靠,保证内存安全和线程安全
③、生产效率高,拥有出色的文档和友好的编译器

4、rust 语言版本说明
rust 语言版本从三个不同的维度来讲,包括三个概念。
4.1 语义化版本

其格式为:主版本号.次版本号.修订号,依次用 句点 隔开。
简单说下语义版本号递增规则:
①、主版本号:当做了不兼容的 API 修改。
②、次版本号:当做了向下兼容的功能性新增。
③、修订号:当做了向下兼容的问题修正。
4.2 发行版本
https://github.com/rust-lang/rust/branches/all

①、master 分支:对于一个发行版本
②、beta 分支:对应 Beta 版本,也叫测试版本。
③、stable 分支:对应 Stable 发行版,也叫稳定版。
通常稳定版和测试版每 6 周 发布一次,一般来说,会先发布测试版,经过一段时间测试,在进行发行稳定版。
4.3 Edition 版次
可以看到每个通过 cargo工具(Cargo 是 Rust 的构建系统和包管理器,后面会详细介绍) 创建的 rust项目的 Cargo.toml文件。

版次的意义和语义化是正交的概念,方便rust自身的进化。
截止到2025年,目前rust有四个版次,分别是 rust2015 和 rust2018、rust2021、rust2024。
| Edition | 发布年份 | Cargo.toml 配置 |
特性亮点 |
|---|---|---|---|
| 2015 | 2015 年 | edition = "2015"(默认) |
原始版本,宏系统、模块路径较老旧。 |
| 2018 | 2018 年 | edition = "2018" |
新模块系统 (use 更直观)、非宏的 async/await 支持、统一宏语法(macro_rules! vs macro!)等。 |
| 2021 | 2021 年 | edition = "2021" |
更好的 panic 处理、预导入的 prelude 增强、IntoIterator for arrays、闭包捕获改进等。 |
| 2024 | 2024 年 | edition = "2024" |
更现代的错误处理模型(如 try_blocks 稳定)、模块路径一致性、更加一致的 trait 解析等。 |
因为rust每6周发布一次新的语义化版本,版本更新迭代速度快,但是版次通常每 3 年发布一次,之所以存在版次和语义化两种概念,我们可以看这样一个例子:
例如添加可能与代码中的标识符冲突的新关键字,比如 ”async"和“await”,刚开始rust是没有异步的概念,后面我们要添加这两个关键词,但是旧代码可能会把这两个关键词当做变量名来使用,这时候如果只有语义化的概念,我们升级rust版本号,就会造成旧代码编译报错。
但是增加了版次的概念就不同了,我们对于之前的代码编译方式选择之前的版次,新的代码编译方式选择新的版次,那么问题就解决了。
因此,如果你正在使用 Rust 2015,并且您的某个依赖项使用 Rust 2018,那么一切正常
开发者可以在 Rust 包管理配置文件 Cargo.toml 来配置 edition = "2018",表示依赖 2018 版次。
编译的时候可以通过:
rustc --edition 2015|2018|2021

5、rust 能干什么
主流的互联网公司都把 Rust 纳入主力语言,比如开发操作系统 Redox/Fuchsia、高性能网络 Tokio、应用的高并发后端 TiKV,甚至客户端软件本身(飞书)。
Rust 除了在其传统的系统开发领域,如操作系统、设备驱动、嵌入式等方向高歌猛进之外,还在服务端高性能、高并发场景遍地开花。

Rust从入门到精通-01-简介的更多相关文章
- SCRM从入门到精通01
[SCRM从入门到精通01]如何基于微信开放接口开发企业的微信CRM? 业内一直都在传说微信是天生的CRM,可是没有人看到过微信CRM的真容.随着微信最新公众平台的改版和开放接口的微信认证开放,微信C ...
- Redis入门到精通01
Redis入门到精通 目录 Redis入门到精通 一.Redis缓存框架基本介绍 1.1Redis的应用场景 二.Redis的安装方式 2.1Windows操作系统安装Redis 2.2Linux操作 ...
- Rust 从入门到精通01-简介
1.rust 从哪里来 Rust语言在2006年作为 Mozilla 员工 Graydon Hoare 的私人项目出现,而 Mozilla 于 2009 年开始赞助这个项目.第一个有版本号的 Rust ...
- Rust 从入门到精通03-helloworld
安装完成 Rust 之后,我们可以编写 Rust 的 Hello Word.这里介绍两种方式,一种是rust原生方式,一种是利用 cargo 工具(重要) 1.rustc 方式 1.1 创建项目目录 ...
- Rust 从入门到精通05-数据类型
Rust 是 静态类型(statically typed)语言,也就是说在编译时就必须知道所有变量的类型. 在 Rust 中,每一个值都属于某一个 数据类型(data type),分为两大类: ①.标 ...
- Rust 从入门到精通06-语句和表达式
1.语句和表达式 语句和表达式是 Rust 语言实现逻辑控制的基本单元. 在 Rust 程序里面,语句(Statement)是执行一些操作但不返回的指令,表达式(Expressions)计算并产生一个 ...
- WPF MVVM从入门到精通1:MVVM模式简介
原文:WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通2:实现一个登录窗口 WPF MVVM从入门到精通3:数据绑定 W ...
- Nginx开发从入门到精通 学习目录分享学习 (阿里著作)
Nginx开发从入门到精通 缘起 nginx由于出色的性能,在世界范围内受到了越来越多人的关注,在淘宝内部它更是被广泛的使用,众多的开发以及运维同学都迫切的想要了解nginx模块的开发以及它的内部 ...
- 【转】Zabbix 3.0 从入门到精通(zabbix使用详解)
[转]Zabbix 3.0 从入门到精通(zabbix使用详解) 第1章 zabbix监控 1.1 为什么要监控 在需要的时刻,提前提醒我们服务器出问题了 当出问题之后,可以找到问题的根源 网站/ ...
- Scala入门到精通
原文出自于: http://my.csdn.net/lovehuangjiaju 感谢! 也感谢,http://m.blog.csdn.net/article/details?id=52233484 ...
随机推荐
- redis 中文乱码
查询数据时中文乱码 解决方法: 使用 ./redis-cli 登录的时候加上 --raw参数 ./redis-cli --raw
- 信息资源管理综合题之“什么是CA 和 什么是数字证书 和 CA实施认证服务的技术基础是什么 和 补全CA签名加密流程图”
一.公钥密码体系和RSA算法是密钥管理.身份认证.防抵赖篡改等安全问题的理论基础和技术保障.题图是运用RSA算法用户A向用户B传送加密信息并进行数学签名的过程.其中A.B的公钥分别为GA.GB,A.B ...
- 提高Flutter应用性能的最佳实践
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- golang+gin实现api接口开发
一.简介: Gin是Go语言的一个微框架,也是是一个用 Go (Golang) 编写的 HTTP Web 框架,封装比较优雅,API相对友好.Gin具有性能优异和灵活快速等优点.它具有类似 Marti ...
- 利用堆排序和分治法求解千万级数据排序的Top K问题—百度面试
目录 问题描述 问题解析 第一步:查询次数统计 第二步:找出Top 10 算法一:排序 算法二:部分排序 算法三:堆排序 1.构造初始堆 2.首尾交换,断尾重构 3.迭代执行第二步 算法四:分治法 小 ...
- MySQL Explain查看执行计划详解
目录 前言 EXPLAIN 中的列 id 和select_type table type possible_keys key 和 key_len ref 和 rows Extra 小结 Referen ...
- docker-compose用法
以下的示例搭建龙一个wordpress博客 services: mysql: image: mysql:latest environment: - MYSQL_ROOT_PASSWORD=123456 ...
- git基础及gitee配置
安装git 网址:https://git-scm.com/book/zh/v2/起步-安装-Git 使用git 基本指令 # 初始化指令 git init # 管理目录下的文件状态 注:新增文件和修改 ...
- SpringBoot集成openGauss
1.pom依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...
- 关于python的一些学习笔记
一种是利用三引号的方法.三引号下默认允许自动换行,第二种就是在文字之间插入\n这种方式(使用转义字符) 这里是关于转义字符的一些总结. 2.关于运算符号 小学除法取余%,中学开n方**,小学除法取整/ ...