一、您好,Rust!

452 阅读5分钟

前言

本篇阅读耗时2分钟左右

看完此篇前可以先理解一下,为什么要学习Rust,使用Rust可以给你带来什么样的作用?单纯学习语言的话,其实可以快速过一篇菜鸟教程。
由于笔者项目后续需要用到Rust,主要用于解决双端现在一些问题,这些问题可以是资源,也可以是技术。
后面将自己前段时间学习的《Rust权威指南》中一些要点和介绍做一下笔记,方便后续查阅,之前C++的笔记放在语雀上,搜索文章功能并没有掘金精确,但是语雀的目录层级确实很好看,还可以导出pdf。
后面笔记就是一些基础语法、宏、生命周期,以及在端上的应用(如何开发Android、IOS)

参考资料
5分钟速读之Rust权威指南(一)
Android集成rust小记,原来这么简单
Rust语言一般适合用来干啥
Rust适合所有的工程师吗
菜鸟教程
Rust中文官网

目录

一、您好,Rust!.png

一、Rust简介

Rust是啥?

ps :摘抄菜鸟教程介绍并修改

Rust 语言是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言。

Rust 语言由 Mozilla 开发,最早发布于 2014 年 9 月。Rust 的编译器是在 MIT License 和 Apache License 2.0 双重协议声明下的免费开源软件。截至目前( 2022 年 10 月)最新的编译器版本是 1.64.0。

Rust能干啥?

应用场景不少,可以开发嵌入式设备、网络服务器、Web应用、端上应用、端系统、3D视频游戏

Rust语言有啥特点?

  • 高性能
    • 内存利用率极高。为什么?它有自己的生命周期管理、内存所有权移交。你在java里全局变量到处都能用,对吧。放到Rust里试试,这个变量可以在某个方法内使用了,就可能获取到了这个变量的所有权,你在方法外就不能用了。而且Rust压根没有运行时和垃圾回收。
    • 相比于Java,Rust的启动速度很快,占用内存小,而且Java用到的垃圾回收,Rust压根没有,性能怎么可能不提高
  • 可靠性
    • 在编译期间,代码写错了都会有提示,例如上面说到的遇到所有权移交情况,或者是同一时间可变引用只能有一个等更加严格的语法
    • 相比于C++,C++中某些错误可能会导致非预期的行为,包括内存管理,一旦delete错了,各种问题就来了
    • 由于语法问题,在Review代码时,一般看下逻辑就可以了,生命周期、所有权可以完美避免不少语义和代码问题
    • 还有几个比较好的特点,就是如果想写不安全代码,必须申明unsafe。并且Rust还不能有任何悬空指针,比如Java中A a = null,Rust不能这样写。
  • 生产力
    • 这个个人觉得主要体现在它的错误提示、文档生成和包管理工具上,和其他语言相比
      • 例如go,除了包管理,错误提示、类型校验和构建工具是很智能,尤其是构建工具。你没有动代码,他就不编译,直接run。并且go太缺乏表现力了,对资源和内存控制能力有点差。

二、Rust前景

Rust社区

包括一些实操和招聘等

Rust前景

就Google而言,你们知道ChromOS后来使用什么语言在开发吗?Rust!
它的另一个领域,Android, 有一些组件已经是用Rust在写了,而且表明会强推Rust到Linux内核!虽然现在风声小了。Google Blogs对Security的一些说明

不仅如此,沃尔沃的技术专家Julius在09年的时候就提讲述了Rust的经历,认为车内系统应该也要用Rust。为什么沃尔沃认为你的车里应该有Rust

就这么语言来说,它能解决的问题很多,例如安全性能、资源成本投入。之所以能称为受青睐的语言,还是因为它能够解决一些通过程序员很难解决的一些问题。就例如安全漏洞,Android和IOS比例很高,每年都有此类新闻,当然还有一些代码错误。
对于Rust最大劣势在于它的上手难度、库的支持不够丰富,这些随着社区的完善,最终将都不是什么问题。

虽然Rust前景很好,但是投产项目中,还是有一些问题需要考虑
抛开单纯语言上的资源投入。目前是否可以开始接入Rust?个人觉得还是谨慎比较好。现在从事Rust开发的人不多,你从Java、Kt、Dart开发的Android,Object-C、Swift开发的IOS重构成用Rust开发移动端,是否考虑到后续资源成本问题,后续是否会存在Rust反重构成Java、Kt、Dart,Object-C开发的端上应用?