前言
近年来随着rust不断深入到前端的基础工具建设里,前端似乎又多了一处可以卷的方向。对于业务开发以及前端工程化比较常用的内容,我只想说早就看腻啦~。
相信不少人对着rust充满了好奇,想知道这是一门什么样的编程语言,这么让人着迷。
介绍
了解一门技术往往最先从它的官方文档开始,在官方文档中我们能看到官方给出的三个rust的优点。
1.高性能
例如像Javascript这门即时编译型语言,它的性能其实并没有那么理想,一个程序依赖着另一个解释程序边翻译边执行,效果自然就没有那么理想。而rust则是一门预编译静态类型语言,在完成代码编写后,会输出一个二进制文的可执行文件,即可在不同平台上运行。
在内存管理上,rust并没有采用垃圾回收机制就可以保证内存安全,其中核心功能便是所有权这个概念,所以在编写rust程序时,也会常常因为变量的所有权没有处理好导致编译失败。
Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。
2.可靠性
rust的编译器功能十分强大, 并且有非常完善的类型系统以及内存管理机制。并且强大的编译器能够在开发阶段提供详细的错误提示,方便开发过程中调试程序。
Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误。
3.生产力
我只能说确实牛
Rust 拥有出色的文档、友好的编译器和清晰的错误提示信息, 还集成了一流的工具——包管理器和构建工具, 智能地自动补全和类型检验的多编辑器支持, 以及自动格式化代码等等。
小试牛刀
关于rust的安装便不再赘述,在windows系统上安装会有些麻烦,在macos上安装则会简单很多。具体可以查看官网的安装指引。 这里我们使用rustlang-rustlings这个在线网站来练习rust。
变量
在rust中我们可以使用let关键字来声明一个变量。
let str = "hello world";
同时rust将上述的操作称为变量绑定,与以往熟悉的变量赋值这个概念不同。变量绑定的概念是考虑到rust语言的核心概念所有权功能才这样描述的。在rust当中内存的所有权仅能存在在一个变量上,如果let A = B,那么在rust中表示为B的所有权转移到了A身上,也可以理解为变量A绑定了变量B的内存对象。
可变变量
rust中变量默认上不可变的,也就是在声明完一个变量之后,再也无法修改这个变量。如果需要修改变量,则需要在变量名称前添加mut关键字来声明这个变量是可变的。
let mut mut_str = "hello world";
mut_str = "bye bye~";
变量默认的不可变性看起来不那么灵活,但它的好处就是安全,极大程度上避免了错误的修改了一个变量导致程序的崩溃。从开发者的角度来看,也可以对程序的每一个变量的使用有更深入的了解。
常量
不仅可以通过let关键字来声明一个变量,而且还可以通过const的关键字来声明一个常量,常量相信大家都非常熟悉,它是声明了一个不允许修改的值。其中const声明的变量不允许使用mut,并且常量需要声明明确的类型。
const KEY:&str = "猪脚饭";
变量遮蔽
如果在同一个代码块当中重复的声明名称相同的变量,在rust中是被允许的,这时候会触发变量遮蔽,即后声明的变量覆盖先前声明的变量,后续的程序在获取该变量时,总是取得的最后声明的变量。
与mut可变变量不同的是,重复声明同名变量涉及到了内存对象的再分配,而可变变量只是修改同一个内存地址上的值,所以可变变量在性能上会优于变量遮蔽。
关于变量暂时需要了解这么多即可,下一篇将深入rust的基本类型,了解在rust针对性能及安全性对变量类型做了什么样的约束。