0%

2024春夏季开源操作系统训练营第一阶段总结报告-ls-kelvin

2024 开源操作系统训练营第一阶段总结

学习过C,C++,Java,Python,再来学习Rust,可以明显感受到它的不同,本次总结我想聊一下Rust的一些特性

  • 所有权

这应该是Rust最特别的地方了,一般我们给函数传递参数,如果是值传递,只会把实参拷贝一份传入函数,而在Rust中不显式说明的情况下都是传递变量的所有权,相当于是把变量的值和原来的名称解绑,再和形参的名称绑定在一起,并且改变了生命周期。这种做法无疑会减少很多安全隐患,但是开发者使用时就需要多加考虑了。

  • 枚举类型

在很多语言中,枚举类型就是有类型规范的宏定义,但在Rust语言中,许多函数的设计都是围绕着枚举类型展开的,最重要的是Option和Result,它们在模式匹配和作函数的返回值中都十分有用,通过None和Err枚举就消除了exception和null的问题。除此之外,还可以让元组和结构体作为枚举,扩展了应用。

  • 智能指针

Rust的智能指针和C++的有很大的区别,原因在于Rust中的变量只能有一个可变引用或多个不可变引用,这使得许多在C++中很容易实现的操作在Rust中需要通过智能指针,Box就像是malloc出一片空间,rc,cell则是多个引用和可变性的工具,但实际操作中这样的限制非常多,运用起来感觉挺麻烦的。

除此之外,还有特征、宏定义、属性、生命周期、多线程、闭包、迭代器、泛型等可圈可点的特性,在此就不多说了。

感受

最后就说一下做题感受,一开始没有rust-analyzer的时候做的有点难受,因为不知道许多内置函数的参数列表和返回值类型,而所有权的转交又会导致报错,后来知道类型了稍微好一些,不过关于可变性的问题一直都不是太清楚。