学习Rust之前,我觉得应该首先了解Rust语言的设计目的是什么?为什么会诞生这门语言?这门语言和其他的语言有什么不同。

Rust语言的设计特点

  • 高性能:rust拥有和C++相近的性能表现,所以在嵌入式领域,rust也正在快速发展。
  • 可靠性:可靠性也是高安全性,在学习Rust语言的过程中可以感受到,Rust中各种机制的设计为这种可靠性打下基础,将各种可能发生的错误或者危险代码在编译阶段阻止,所以说,Rust是一门安全的语言(相对于C++的各种问题做出的优化)。内存的管理机制相当巧妙。
  • 生产力:Rust 拥有出色的文档、友好的编译器和清晰的错误提示信息, 还集成了一流的工具——包管理器和构建工具, 智能地自动补全和类型检验的多编辑器支持, 以及自动格式化代码等等。
    • rust的包管理比C++好太多了,cargo十分好用。
    • rust的编译器十分强大,可以很好的输出错误信息,甚至给出解决方法。对新手十分友好。

其它特点:

  • 现代语言特性:rust的语法糖比较多,一些人可能比较讨厌这一点,不过目前我觉的还不错。融合各种其他语言的技巧。
  • 丰富易用的库:相对与C++(上次使用C++的Poco库,是真的门槛极高,不适合快速开发),rust有很多好用的库(我不记得名字了,呜呜呜。学习-ing)。

目前我接触的特性

一些是不同于其他语言的新概念,一些概念名字不同于其他语言,但是概念上类似。

新概念

  • 变量的可变性:这个不同于const的概念,可变的变量需要用mut声明,默认变量不可用,但是可以覆盖。(内存安全设计)

  • 所有权:针对复合类型(标量类型无所有权)的变量,拥有所有权。其实,真正区分变量十分有所有权应该看这个变量是放在还是。放在栈上的变量没用所有权,放在堆上的变量拥有所有权的概念。(内存安全设计)

    • 标量类型一般指的是整型,浮点型,布尔型,字符类型

    • 复合类型一般是元组,数组,还有一个是字符串类型(Rust还有一种类型是字符串字面值,也叫字符串切片值(字符串 slice),它也是字符串类型的引用。不同于字符串类型),注意字符串类型不是原生类型。

    • 引用和借用:这里的概念相对复杂,与其他语言差异较大,如果结合变量在内存中的状态会比较好理解。下面是一个引用的内存图。至于为什么这样设计,是为保证指向一片内存的指针只有一个,防止内存重复释放。这个是所有权设计的目的所在

  • 强大的枚举和模式匹配:这里是我觉得rust设计比较好的地方,rust里的枚举和结构体具有相近的能力,结合模式匹配,可以很好的进行分支和错误处理。

    • rust也是一个空安全语言(如果你学习过空安全语言可能有一定认识,也就是说rust里面没有空类型。目前,采用空安全的语言大多是新语言,因为Null本身是一个错误的设计,不过空这个概念仍具有价值),在rust用一个Optional类型代替空类型。Optional是一个枚举类型,其定义如下:

      enum Option<T> {
      None,
      Some(T),
      }

      Some表示有值,None表示空值。结合模式匹配方法,可以对空值进行额外处理,防止错误发生。

与其他语言类似概念

  • 关联函数:类似于C++中的静态函数。
  • crate:翻译过来是板条箱,可以理解为python中的模块。
  • HashMap:rust里的字典,说是安全性更高。

最新文章

  1. C#:优惠券代码
  2. Xml生成节点声明
  3. 安装Ubuntu时的硬盘分区方案
  4. 符号(void *)何解?符号(void **)又何解??
  5. 2014 Hangjs 见闻流水账第二天
  6. android.intent.action.MAIN 与 android.intent.category.LAUNCHER 的验证理解 (转)
  7. js 字符串扩展
  8. iOS - 正则表达式判断邮箱、身份证..是否正确:
  9. 获取EnterpriseLibrary企业库配置文件中ConnectionStrings(原创)
  10. HTML编码的用户输入
  11. codeforces 374D. Inna and Sequence 线段树
  12. H5_0004:JS设置循环debugger的方法
  13. ORACLE,DECODE函数和排名函数DENSE_RANK函数的使用
  14. linux 地址解析协议 arp
  15. Linux服务器CPU使用率较低但负载较高
  16. java基础----&gt;String中的split方法的原理
  17. metasploit 常用命令备忘
  18. [ VB ] If 运算符 [ C# ] 条件运算符 (?:)
  19. mybatis-generator 详细配置及使用,爬坑记录
  20. Java中String、StringBuffer和StringBuilder的区别

热门文章

  1. Docker 入门指南
  2. React版/Vue版都齐了,开源一套【特别】的后台管理系统...
  3. Typora自动上传超级详细教程!!
  4. (数据科学学习手札141)利用Learn Git Branching轻松学习git常用操作
  5. WinUI 3 踩坑记:前言
  6. Windows 10 索引设置
  7. Python数据科学手册-Numpy入门
  8. JavaScript 的闭包(closure)
  9. Docker MySql 查看版本的三种方法
  10. PAT (Basic Level) Practice 1014 福尔摩斯的约会 分数 20