当前位置 : 主页 > 编程语言 > java >

【Rust日报】 2019-08-11:C++工程师的Rust迁移之道 组合与集成

来源:互联网 收集:自由互联 发布时间:2022-06-30
C++工程师的Rust迁移之道 组合与集成 #rust 知乎专栏C++工程师的Rust迁移之道继承与组合部分第二篇更新。 组合与继承 上 组合与继承 中 C++中的多态面临的问题 在使用静态派发时,由于完


C++工程师的Rust迁移之道 组合与集成

#rust

知乎专栏C++工程师的Rust迁移之道继承与组合部分第二篇更新。

  • 组合与继承 上
  • 组合与继承 中

C++中的多态面临的问题

  • 在使用静态派发时,由于完全依赖重载,当编写对应的代码时,很难保证你的类完整实现了调用代码的要求,再加上了深度模版的使用,导致出错信息非常难以阅读;为了解决这个问题C++标准委员会在C++ 20标准中加入了concepts的概念,它可以显式的提出约束,使用的例子可以参见上一篇文章 https://zhuanlan.zhihu.com/p/75755125,而更多的信息,大家可以参见cppreference[2];
  • 在使用动态派发时,由于vptr存在,它会破坏对象本身的内存结构,当你的对象还需要与其他库(特别是C语言编写的库)进行交互的时候,内存结构就会称为一个显著的问题;
  • 由于C++是一个非常成熟的语言,而concept又是在下一个标准中才会加入进来的概念,所以对于静态派发和动态派发的约束是完全不一样的语法,而且对于同样的约束,如果我们需要同时使用静态和动态派发的话,必须写两遍(一遍虚基类,一遍concepts)。
  • 对于上述提到的3个问题,在Rust中有一个统一的解决方案,那就是trait系统, 更多内容请看正文。

    Read More

    grin 一个 MimbleWimble 协议的最小实现

    #crate

    MimbleWimble是一个区块链隐私保护的格式和协议,是一种可以防止区块链泄露个人信息的技术,名字来源于《哈利波特》。grin是MimbleWimble协议的最小实现。

    Read More

    amethyst 面向数据和数据驱动的游戏引擎

    #crate

    amethyst 是一种数据驱动和面向数据的游戏引擎,旨在尽可能快速且可配置,文档写的很详细,下面是由它实现的两个项目:

    • Evoli - 3D, ecosystem simulator
    • Space Menace - 2D, action platformer

    Read More

    tracing 更新

    #crate

    tracing 是一个框架,用于检测Rust程序以收集基于事件的结构化诊断信息。跟踪由Tokio项目维护,但不需要使用tokio运行时。instrument 属性提供了一种向函数添加跟踪跨度的简便方法。使用 instrument 注释的函数将在每次调用函数时创建并输入具有该函数名称的span,并使用fmt::Debug将该函数的参数记录为字段。

    Read More

    Rust 和 Raspberry Pi教程

    #rust

    最近在用 Rust 玩树莓派,找到了一份比较好的Rust + Raspberry Pi教程。

    Read More



    日报订阅地址:

    独立日报订阅地址:

    • Telgram Channel
    • 阿里云语雀订阅
    • Steemit
    • GitHub

    社区学习交流平台订阅:

    • Rust.cc 论坛: 支持 rss
    • Rust Force: 支持 rss
    • 微信公众号:Rust 语言学习交流
    网友评论