艰难的Rust学习之旅
自己是在偶然的情况下,在一个计算机体系结构群里发现了这个训练营,当时一看到这个训练营还以为是谁混进来打得一个广告,点开仔细一看,发现
并不是像我想的那样,而是一个非常正规的训练营,而且还是我感兴趣的方向——OS,我立马下定决心,一定要参加,我做到了,然后……就是痛苦的
rust学习之旅了:(
rust和我以前学的语言都不是很相似,这种感觉当我发现rust中变量默认不可变时候就一直缠绕在我的心中,但是这还只是rust众多特性中最好理解
的一个(悲),所有权问题和生命周期问题曾今困扰我很久(虽然现在也不是特别懂……),小小总结一下所有权和生命周期吧:
所有权:是为了解决内存申请与释放问题而采取的一种有别于其他编程语言更热衷使用GC和手动管理机制的特殊管理机制,通过编译器在编译时候
根据一系列预设规则进行检查来确保内存的安全。而这一系列规则中最重要的一点规则是:
Rust中每个值都只能被一个变量所拥有,而当所有者或者说变量离开作用范围时,这个值将被抛弃(drop)
生命周期:生命周期简而言之就是引用的有效作用域,主要作用是为了避免垂悬引用,而生命周期的标注主要是为了帮助编译器进行借用检查的分析
需要特别注意的是,生命周期的标注并不会改变任何引用的实际作用域
rust 中其他的几个非常重要的概念有:智能指针,迭代器,Unsafe,这几个概念也是非常的令我头疼,rustlings做到相关的习题时,老是卡个半天,
但是这些都是rust学习中必须要掌握的重点知识,所以我也是花了相当多的精力在于编译器斗智斗勇中(
rustlings 最后10道算法题也是把我折腾的够呛,写的时候压根就无法关注到它的复杂度,能通过测试就很不容易了:( , 而且后面几道题需要频繁
调用标准库中的方法,我也是找个半天,看来以后还是得多用才能熟悉的写啊
但是不管怎样艰难,我最终还是坚持写完了110题,rust虽然不能说学会了,但是至少入门了吧,那现在就让我继续向操作系统进军吧,加油!