Rust:一个不再有 C/C+的,实现安全实时软件的未来( 九 )
Box 类型则表示我们已经在堆上分配了内存,在这里使用是因为 unique_ptr 同样可以分配到堆。因为 Rust 中每个对象一次有且仅有一个所有者的规则,我们并不需要任何 unique_ptr 类似的东西。接着创建一个闭包,用更高阶的函数 map 转换字符串,类似 C++ 的方式,但并不显得冗长。但当编译的时候还是会报错,下面是错误信息:
Rust 社区有一点很棒,它提供给人们的学习资源非常多,也会提供可读性的错误信息,用户甚至可以向编译器询问关于错误的更详细信息,而编译器则会回复一个带有解释的最小示例。
当创建闭包时,由于有且仅有一个所有者的规则,数据是在其内被移动的。接下来编译器推断闭包只能运行一次:没有所有权的原因,多次的运行是非法的。之后 map 函数就会需求一个可以重复调用并且处于可变状态的可调用函数,这就是为什么编译器会失败的原因。
这一段代码显示了 Rust 中类型系统与 C++ 相比有多么强大,同时也体现了在当编译器跟踪对象生命周期时的语言中编程是多么不同。
在示例中的错误信息里提到了特质(trait)。例如:”缺少实现 FnMut 特质的闭包“。特质是一种告诉 Rust 编译器某个特定类型拥有功能的语言特性,特质也是 Rust 多态机制的体现。
推荐阅读
- 雷神|原神:曾经有一个强力五星角色,却因各种“流言蜚语”,擦肩而过
- 次世代|韩国战队全军覆没,斗鱼选手实力强大,一人击溃一个队
- 手机游戏|LOL手游第一个世界赛,破晓杯火热开战,DKG能紧随EDG夺冠吗?
- xyg|月光败给XYG不敢去采访,怕主持人问他一个问题!根本没办法解释
- 卡牌|王者峡谷最难抓的五个英雄,暗信算一个,榜首玩起来非常快乐
- 传奇世界|传奇世界:盘点当年出现过哪些漏洞,有一个至今都存在?
- 扁鹊|裴擒虎虎年限定有变,嫦娥拒霜思配音引热议,扁鹊有一个好消息
- 绝地求生|不播绝地求生,跑去玩双马尾少女?PDD后又一个主播“沉迷”幻塔
- 光·遇|光遇:追光季复刻盘点,下一个返场先祖,可能是笛子或者灯泡斗篷
- 地下城与勇士|DNF:“全民云上”时代到来,一个过气小副本,究竟有何魅力?