01-为什么选择Rust?

B站影视 日本电影 2025-09-27 17:13 1

摘要:考虑了很久,觉得有必要把自己所学的分享出来,是自己的一份足迹,也可以让感兴趣的朋友一起学习,一同进步。分享是一件很快乐的事情,即使彼此不认识,但无形之中的一个点赞评论以及分享传播的鼓励也能让我开心许久。我是从2024年开始了解Rust,但真正开始学习的时候却是

考虑了很久,觉得有必要把自己所学的分享出来,是自己的一份足迹,也可以让感兴趣的朋友一起学习,一同进步。分享是一件很快乐的事情,即使彼此不认识,但无形之中的一个点赞评论以及分享传播的鼓励也能让我开心许久。我是从2024年开始了解Rust,但真正开始学习的时候却是2025年年后开始,之所以拖这么久,是因为我是一名嵌入式软件开发工程师,真正会使用Rust的场景现在还不是那么成熟,支持使用Rust进行嵌入式开发的芯片也才起步不久。俗话说“万事开头难”,既然有了用Rust进行嵌入式开发,那么Rust逐步进入嵌入式是迟早的事,凡事预则立不预则废。而且Rust有那么多诱人的优秀特性,所以也下定决心将其熟悉,在此也将自己所学所感记录下来,供自己回顾,也供大家参考,有什么不对之后,欢迎大家指正。

内存安全无数据竞争:Rust通过所有权系统、借用检查器和生命周期检查在编译期强制保证内存安全,完全避免了控制正、悬垂指正、数据竞争等常见的内存错误。高性能:由于编译时完成内存安全检查,没有垃圾回收机制(GC)或解释器,Rust代码执行效率极高,适合对性能敏感的场景,比如操作系统内核、数据库引擎和嵌入式设备等成本抽象:使用高级语言抽象特性(比如迭代器、泛型、trait和模式匹配等)不会带来任何运行时开销,编译器会将其优化成高效的底层代码,兼顾了抽象能力和性能。无畏并发:所有权系统天然限制了多线程环境下的数据竞争,同一时间只能有一个可变引用或多个不可变引用,编译时即可排查并发错误,从根源上避免了运行时的线程安全问题。强大的工具链和包管理器:Cargo被广泛认为是业界最好的包管理器和构建工具之一。它统一了构建、测试、依赖管理(从 crates.io 下载)、文档生成和发布流程,体验非常丝滑。Rustfmt统一的代码格式化工具,保证了代码风格的一致性。Clippy强大的代码 lint 工具,能给出很多改进建议,帮助写出更地道的 Rust 代码。丰富的类型系统:Option和Result枚举类型强制开发者处理所有可能存在的空值和错误,将许多运行时错误转化成编译期错误。trait系统支持泛型、关联类型等,是实现多态和行为抽象的核心。泛型在编译期进行“单态化”,保证了高性能。活跃友好且不断增长的社区:社区友好和乐于助人而闻名,并且有严格的行为准则约束。生态系统蓬勃发展,拥有大量高质量的三方库。许多科技公司在生产环境中使用,比如微软、谷歌、亚马逊、Meta、阿里、字节跳动、华为、Vivo等等。跨平台支持:Rust代码可以编译到多个平台,包括Windows、Linux、MacOS、WebAssembly和嵌入式芯片等等,适配场景广泛。

2.2、Rust有什么缺点?

金无足赤人无完人,虽然Rust语言有一系列的优点,一样也存在一些缺点。下面是Rust存在的一些缺点。

学习难度高:所有权、借用、生命周期等概念是Rust独有的设计,与其他语言的思维模式差异大,编译器极其严格,就像一位严师在一旁教导指正你一样,新手容易因频繁的编译错误感到挫败,经常需要与编译器作斗争,需要较长的时间适应。编译速度慢:由于编译时需要进行复杂的内存安全检查、类型推导和代码优化(泛型单态化以及宏等)。Rust编译项目的速度显著慢于Go、C等语言。初期开发效率低:严格的编译检查要求开发者编写更严谨的代码,调试“借用冲突”等编译错误可能消耗较多时间。二进制文件体积大:默认情况下Rust的静态链接和包含调试信息会导致二进制文件体积较大。需要额外的编译选项配置来减小体积。领域局限性:Rust在系统编程、命令行工具、网络服务、WebAssembly、区块链等领域表现出色。但是在一些需要快速原型开发或动态语言的领域(比如脚本任务、机器学习原型)优势不那么明显。生态成熟度待提升:生态起步晚,相对于老牌的编程语言(比如C/C++、Python)等,库数量和成熟度有不少的差异。但是各个公司也逐步掀起了使用Rust重写各个组件的热潮。

很多人不禁要问,不就需要花时间吗?的确,学习任何东西都需要持续有效的花时间才能熟悉它,但是学习Rust很多人会有从初窥门径直至怅然放弃,而后再度涉足却又重蹈覆辙,如此反复循环……的现象存在。因为Rust的学习过程需要经历思维转换,而且编译器又极其严格,导致在学习初期经常被挫败,很多人就会中途放弃,不甘心又会再来一遍。所以学习Rust是需要耐心恒心以及决心,不然是无法坚持学习下去的。不过没关系,本合集会尽量以最简单的话语,尽可能的使用多例子来阐述各个知识点,尽量做到通俗易懂。而且每章节知识点不贪多,只求细讲。我强烈推荐使用西蒙学习法学习Rust,所谓的西蒙学习法就是积极的学习动机+有效的学习方法+必要的时间投入,西蒙学习法是全世界公认最有效的学习法之一,只要坚持按照该学习法,学习任何东西都可以学成它。

由于Rust具有内存安全、高性能、表达能力强和跨领域的特点,我觉得它一定会在未来大放异彩。而且越来越多的科技巨头拥抱Rust,Rust现在也逐步进入Linux内核,Windows驱动、数据库引擎、区块链Solona等。而且在嵌入式领域,STM32、乐鑫esp32、Nordic的nRF系列以及Vivo的BlueOS都有使用Rust进行开发。而且时不时有一些老牌组件使用Rust进行重写。Rust没有内存泄漏的问题,没有NULL的设计(NULL称为10亿美元的错误NULL: The Billion Dollar Mistake | HackerNoon),解决了程序大部分运行时因内存访问不当造成的经济损失。虽然Rust编译器极其严格,而且编译时间长,但是从实际解决问题来看,它还是很值得,越早发现问题,及时解决代价越小,所以Rust是一门很值得投资使用的语言。

来源:Andy001847

相关推荐