「Rust放弃指南」- 我是怎么7天放弃的

Rust是一门号称“无GC”,也不需要程序员关注内存回收的一门非常安全的语言。

简介

到底Rust是否如官方所说的那样,真的这么好呢,首先我们去看下别人对Rust的评价。

  • 1、系统级别的语言
  • 2、无GC
  • 3、基于LLVM
  • 4、内存安全
  • 5、强类型 + 静态类型
  • 6、混合编程范式
  • 7、零成本抽象
  • 8、线程安全

评价:1、2和7,戳中了Java和Golang,4和8,戳中了C++,1和5,戳中了Python。

那我们去看看Rust到底是何方神圣,以及为什么我要放弃这么好的一门语言。

所有权与借用 + 生命周期

Rust是通过什么手段回收已经不再使用的内存呢?

那就是所有权机制,和借用规则,并将这种机制和规则在编译期就检测出来。

下面我们看一段代码:
「Rust放弃指南」- 我是怎么7天放弃的_第1张图片

我们声明了一个变量a,并且赋值为String类型,然后把a再赋值给b,最后我们去打印这个a,编译的时候就会报错,因为a所指向的内存已经被b获取了,这块内存的所有权主人已经发生了转移。

Rust里的所有内存都是有主之物,只有主人消亡了,内存才会被销毁,当然这也不是绝对(什么?这还有例外)。

有主之物,别人想要使用,必须通过借,使用完了必须还回来,而且必须在主人消亡之前还回来。

这样一套所有权借用体系,说起来容易,实现起来就非常折腾人了。

这就要用到生命周期来实现,所有借用都是有生命周期的,包括泛型(什么?还有泛型借用)。

生命周期的原理不了解,很快就会被劝退。

我们看下面的这段生命周期的代码:
「Rust放弃指南」- 我是怎么7天放弃的_第2张图片

'b的生命周期不小于’a,使用**'b:'a**来表示,官方没有说明为什么要这么表示。

生命周期也可以省略:
在这里插入图片描述

哪些情况下可以省略,巴拉巴拉的几条规则,我这里就不写了。

PS:除了生命周期以外,还有变量的作用域生命周期,通过let这个操作符,可以直接开辟一个当前变量的作用域,该变量只能存活在这个作用域里,除了let,还有其他的一些操作符,都可以单独开辟一个作用域,所有的代码都是有作用域的,都是有生命周期的,Rust统一了变量的生命周期。

总结

这里只是Rust语言语法层面的冰山一角,当你觉得你已经学会Rust的时候,你才发现1000个台阶,你仅仅只迈开了第一步。

– 走过路过,三连走起,喜欢的点个关注哈,谢谢!

你可能感兴趣的:(高手过招,rust,后端)