专栏首页Rust语言学习交流【Rust日报】 2019-08-11:C++工程师的Rust迁移之道 组合与集成

【Rust日报】 2019-08-11:C++工程师的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 是一种数据驱动和面向数据的游戏引擎,旨在尽可能快速且可配置,文档写的很详细,下面是由它实现的两个项目:

  • 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


From 日报小组 格朗

日报订阅地址:

独立日报订阅地址:

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

社区学习交流平台订阅:

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

本文分享自微信公众号 - Rust语言学习交流(rust-china),作者:makeco

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Rust日报】 2019-06-26: DigitalBridge: 为什么我们在云渲染中使用Rust?

    类似于Rust By Example的一本小书,是教你学WASM。目测内容还不够丰富,不过可以先关注。

    MikeLoveRust
  • 【Rust日报】 2019-05-20:经过3年零8个月的工作,WebRender将向稳定的用户发货!

    对Rust感兴趣的Scala开发人员可以来看看,对比Scala和Rust的语法和思想。

    MikeLoveRust
  • 【Rust日报】 2019-08-04:知乎专栏【CPP工程师的Rust迁移之路】新文章出炉

    知乎网友@黄珏珅开设了本专栏,主要针对对 Rust 感兴趣的 C++ 工程师,介绍了完成相同任务 C++ 和 Rust 中的异同,感兴趣可以专注专栏。本周第三篇...

    MikeLoveRust
  • 【Rust日报】 2019-06-26: DigitalBridge: 为什么我们在云渲染中使用Rust?

    类似于Rust By Example的一本小书,是教你学WASM。目测内容还不够丰富,不过可以先关注。

    MikeLoveRust
  • 【Rust日报】 2019-05-20:经过3年零8个月的工作,WebRender将向稳定的用户发货!

    对Rust感兴趣的Scala开发人员可以来看看,对比Scala和Rust的语法和思想。

    MikeLoveRust
  • Android 9.0 适配指南

    国内从去年开始就有消息说,应用上架或者更新要求TargetSdkVersion最低要为26以上,也就是最低也要适配到8.0。今年来也都逐步地开始落实。比如下图的...

    Rouse
  • 纯函数式堆(纯函数式优先级队列)part three ---- bootstrapping (自举)

    Ldpe2G
  • 通过三次优化,我将gif加载优化了16.9%

    现在app越来越炫,动不动就搞点动画,复杂的动画用原生实现起来挺复杂,如是就搞起gif播放动画的形式,节省开发成本。

    WeTest质量开放平台团队
  • 14:求满足条件的3位数

    14:求满足条件的3位数 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 编写程序,按从小到大的顺序寻找同时符合条件1和2...

    attack
  • Mathematica 谜中智 | 趣味象棋 一马平川

    WolframChina

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动