< 返回版块

makeco 发表于 2019-08-11 22:11

Tags:rust

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

#rust

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

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

  1. 在使用静态派发时,由于完全依赖重载,当编写对应的代码时,很难保证你的类完整实现了调用代码的要求,再加上了深度模版的使用,导致出错信息非常难以阅读;为了解决这个问题C++标准委员会在C++ 20标准中加入了concepts的概念,它可以显式的提出约束,使用的例子可以参见上一篇文章 https://zhuanlan.zhihu.com/p/75755125,而更多的信息,大家可以参见cppreference[2];

  2. 在使用动态派发时,由于vptr存在,它会破坏对象本身的内存结构,当你的对象还需要与其他库(特别是C语言编写的库)进行交互的时候,内存结构就会称为一个显著的问题;

  3. 由于C++是一个非常成熟的语言,而concept又是在下一个标准中才会加入进来的概念,所以对于静态派发和动态派发的约束是完全不一样的语法,而且对于同样的约束,如果我们需要同时使用静态和动态派发的话,必须写两遍(一遍虚基类,一遍concepts)。

对于上述提到的3个问题,在Rust中有一个统一的解决方案,那就是trait系统, 更多内容请看正文。

Read More

grin 一个 MimbleWimble 协议的最小实现

#crate

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

Read More

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

#crate

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

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


From 日报小组 格朗

日报订阅地址:

独立日报订阅地址:

社区学习交流平台订阅:

评论区

写评论
Nalleyer 2019-08-11 23:36

amethyst最近用过一点,理念很不错,只不过先阶段文档还是太少,学起来经常是在看源码。 建议等待进一步成熟。

1 共 1 条评论, 1 页