rust篷布怎么来_一起来生锈吧:Rust 里那些有趣的设计

最近突(bei)发(po)奇(wu)想(nai)地想写一篇博客,但是想了半天也不知道写啥。如果深入地讲一些大家都熟悉的技术,可能辛辛苦苦地搜索整理出来后还没大家本来就知道的深入,肯定是会被嘲讽的。没办法,只好来浅浅地谈一谈大家都没了解过的技术,不能在内容上有深度,但是至少可以在形式上看起来有深度啊 :)。

要是提到当前热门的编程语言里哪个最难学,Rust 肯定不会缺席。可能也正是这个原因,很多人只听过 Rust 的大名,却没想去学习它的念头。当然我也没有去深入的学习,只是简单的了解了一下它比较重要的几个特性,感觉比较有趣。所以想在这里分享出来,做一个勤劳的搬运工。我只是带大家显微镜中窥蟹,看完这篇博客并不会让你学会 Rust ,只是对 Rust 有个大概的了解。如果看完觉得有趣,可以进一步深入地学习。如果看完觉得也就这样,那你下次完全可以自信地说:呵!Rust也不过如此(逃。

Rust 社区将 Rust 的用途分成了四个不同的领域,分别是命令行、WebAssembly、网络和嵌入式。并且有各自的团队分别去提升在各个领域中的编程体验。这就意味着,学了 Rust 就有了写客户端、服务器和嵌入式程序的能力了!我喜欢这种万金油语言,它让我有了可以误以为我啥都会的资本。人生苦短,还是要多多地犒劳自己。

作为一个画页面的,我还是比较关注 Rust 在 WebAssembly 方向上的能力。Rust 社区提供的一套工具,可以直接将 Rust 项目编译成 WebAssembly 并直接发布到 npm。然后在 web 项目里直接通过 npm 安装后就可一直接在前端或 node 项目里导入使用了。没错,就是这么的方便!

Rust 官网列出了三个选择 Rust 的理由:高性能、可靠性和生产力。其中高性能里是这样解释的:Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。

大部分的语言都有运行时,且在运行时里还有垃圾回收机制,可是 Rust 没有。现在国家都在大力推动垃圾分类,其目的也是垃圾回收,Rust 怎么能没有呢,没有的话岂不是会造成严重的污染。所以可靠性这一理由是这样被描述的:Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误。

这里说到一个比较陌生的词 所有权 ,说它可以保证内存安全,而不会造成内存污染,而且还是在编译期就能避免,而不用在执行期占用额外的资源。但是什么是 所有权 呢,我以前可从来没听说过呀。这就是 Rust 的一个比较核心的概念:所有权 。

所有权

现在主流的内存管理方式有两种:垃圾回收和手动管理。垃圾回收机制就像实行垃圾分类之前,产生了一个垃圾后直接扔地上或垃圾桶里,保洁人员会定期进行清理。手动管理就像现在执行了垃圾分类,产生了一个垃圾自己归好类后再扔进特定的垃圾桶里。保洁人员过多的话会占用过多的资源,且不能保证垃圾即时地被回收了。而自己每产生一个垃圾就要手动归类放到指定的位置又过于麻烦。那你有没有想过这样一种可能呢:当你产生一个垃圾后直接一扔,它就会自动飞到垃圾处理厂里去进行进一步处理然后回收。对!在 Rust 里就是这样,这就是 所有权 模型 。所有权 (ownership)

官方文档里描述了所有权有以下规则:1. Rust 中的每一个值都有一个被称为其 所有者(owner)的变量。

2. 值有且只有一个所有者。

3. 当所有者(变量)离开作用域,这个值将被丢弃。

让我们先来看一个代码片段(请忽略语法细节,大概能看懂就行):

fn say_hello(){// hello 在这里无效, 它尚未声明lethello="hello";// 从此处起,hello 是有效

你可能感兴趣的:(rust篷布怎么来)