Rust所宣称的zero-costabstractions是什么

所谓zero-costabstractions指的是在构建一个抽象的时候这个抽象不会造成额外的负担,典型的对比是 struct 和 Java 的 class。zero-costabstractions是指Rust中抽象用到的类型和Trait信息不会保留到运行时,虽然做出了抽象,但是并没有为抽象支付成本。

所谓 zero cost abstraction 指的是你在构建一个抽象的时候这个抽象不会造成额外的负担,典型的对比是 struct 和 Java 的 class。如果Java 的类 A 里有类类型 B 的成员,那么通过这个 A 类对象访问 B 成员事实上需要两次指针访问,但如果是 Rust 的 struct,你直接把它分配到栈上,那直接就可以访问到了,就和 C++ 里的 class 一样。你虽然做出了抽象,但是并没有为抽象支付成本,和你不抽象直接把东西放一起是一样的。

所谓的0抽象是指Rust中抽象用到的类型和Trait信息不会保留到运行时,这个跟你描述的优化是两个事情,不能混为一谈。

对比Java,Java可以在运行时做类型的强转,以及判断对象是否属于某个接口,甚至直接返回接口,这些都需要保留一部分类型信息在运行时才能做到而在Rust中是没有的。注意这里的没有并不是说Rust做不到这类功能,可以通过trait明确写死信息来做,或者dyn trait去做。

然后你想想,你写代码的时候是各种类型各种trait,这些信息只用来在编译期间检查你代码的正确性,编译之后这些信息都没了,还能正确运行,是不是0抽象了?

延伸阅读:

什么是Rust?

Rust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和C++类似,但是设计者想要在保证性能的同时提供更好的内存安全。 Rust最初是由Mozilla研究院的Graydon Hoare设计创造,然后在Dave Herman, Brendan Eich以及很多其他人的贡献下逐步完善的。Rust的设计者们通过在研发Servo网站浏览器布局引擎过程中积累的经验优化了Rust语言和Rust编译器。

Rust编译器是在MIT License 和 Apache License 2.0双重协议声明下的免费开源软件。 Rust已经连续七年(2016,2017,2018,2019,2020, 2021, 2022)在Stack Overflow开发者调查的“最受喜爱编程语言”评选项目中折取桂冠。

文章标题:Rust所宣称的zero-costabstractions是什么,发布者:小编,转载请注明出处:https://worktile.com/kb/p/39253

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月22日
下一篇 2023年2月22日

相关推荐

  • oa系统是哪个公司的

    OA系统(Office Automation System)指办公自动化系统,是指运用计算机及网络技术来对办公室的信息进行收集、处理、存储和传输,以实现办公室的信息资料自动化、办公流程的简化以及办公室工作的高效化和智能化的一套综合应用系统。OA系统并非某个单一公司的专属产品,而是由众多软件开发公司根…

    2024年1月11日
    22000
  • 什么是集成项目管理

    集成项目管理是一种确保项目各个组成部分协调一致、顺畅地交互的流程。1、集成项目管理需要强调项目计划、执行、监控和收尾四个方面的连贯性;2、确保项目目标的实现是核心任务;3、通常包括制定项目章程、项目管理计划以及项目变更控制等关键活动。其中,项目管理计划作为核心,细化了项目目标并描述了实现这些目标所需…

    2024年1月8日
    23000
  • 方阵与矩阵的区别是什么

    方阵与矩阵的区别有以下几方面:1、指代不同;2、侧重点不同。其中,指代不同是指,方阵:方形之军阵。矩阵:数学元素(如联立线性方程的系数)的一组矩形排列之一。包含关系方阵其实就是特殊的矩阵。当矩阵的行数与列数相等的时候,我们可以称它为方阵。 一、指代不同 矩阵是由若干元素按行列构成的矩形数表,根据行列…

    2023年2月17日
    1.9K00
  • redis一般用在什么场景

    一般用在:一、缓存存储;二、分布式锁;三、计数器;四、消息队列;五、地理位置;六、实时排行榜。Redis最常用的场景之一就是缓存存储,因为Redis是一种内存数据库,它的读写速度非常快,能够快速存取数据。 一、缓存存储 Redis最常用的场景之一就是缓存存储,因为Redis是一种内存数据库,它的读写…

    2023年6月11日
    1.1K00
  • 敏捷和devops的原理是什么

    敏捷与DevOps的原理探索 敏捷与DevOps,两个在现代软件开发环境中备受推崇的方法论,核心围绕提升效率与响应速度。1、敏捷方法论 强调迭代进化与客户合作的重要性。2、DevOps文化 则侧重持续集成与快速交付软件的实践。在这两者的结合中,敏捷提供了灵活调整的框架,而DevOps通过自动化工具链…

    2024年3月26日
    7300
  • devops模型什么时候出的

    DevOps模型自2008年提出,至今已历经近15年发展。这一理念突显软件开发与运维协作的重要性。1、 来源于2008年的一次技术讨论会议,核心在于缩短开发与部署间的差距;2、 强调自动化流程以提升效率;3、 推崇文化变革,促进团队协作和沟通。4、 价值在于快速、可靠地交付产品。 1、 DevOps…

    2024年3月26日
    5900
  • remove和delete有什么区别

    区别是:remove()是C语言中的函数,一般作用是删除文件。函数原型是int remove(cha r*filename)。delete是指删除,常用于编程语言中(C++、SQL等)。delete 的使用编程的时候经常要用到堆内存的分配,通常使用的操作符是new,这个时候就必然要用到delete去…

    2023年2月17日
    1.3K00
  • 产品管理中的用户故事拆分技巧是什么

    开篇即进入核心议题,用户故事拆分技巧涉及到1、小而具体化处理、2、基于价值优先级划分、3、维持故事独立性、4、保证可测试性、5、适时地沟通与迭代中的每一环节都至关重要,具体到某个领域例如小而具体化处理,意味着应确保单个用户故事的精简性,确保团队能够在短周期内完成,且便于理解、估时与实施。 一、小而具…

    2024年1月19日
    22200
  • 如何做好扶贫项目绩效管理

    要做好扶贫项目的绩效管理,几个关键要素不可或缺:明确目标、科学设计指标体系、建立健全监测评估机制、强化成果反馈和持续改进。其中,科学设计指标体系对于衡量项目成效尤其关键,它涉及到能否准确评估项目实施的效果和影响,进而指导扶贫项目的持续优化和有效实施。 科学设计指标体系要考虑到指标的全面性、可操作性和…

    2024年4月10日
    4300
  • 需求管理的未来趋势:预测与前瞻

    预测与前瞻下的需求管理趋势将紧随技术发展、组织变革与市场需求的步伐。1、跨领域整合的需求管理方法将成为主流;2、人工智能与机器学习技术在需求管理中的应用会越来越广泛;3、敏捷与持续交付模式将影响需求管理实践;4、客户参与度的提高会对需求管理产生重要影响;5、数据驱动的决策制定成为需求管理的核心。 在…

    2023年12月18日
    46500

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部