ITPub博客

首页 > 数据库 > 数据库开发技术 > 【Rust日报】2023-12-11 Rust 超越面向对象编程: 第三部分 继承

【Rust日报】2023-12-11 Rust 超越面向对象编程: 第三部分 继承

原创 数据库开发技术 作者:Rust语言中文社区 时间:2023-12-12 22:49:57 0 删除 编辑

何时可传递 Non-Send的 Future ?

本文深入探讨了异步Rust中有关跨越 .await 时借用非Sync数据的问题。首先回顾了Send和Sync自动traits,这些traits是Rust库中支持无畏并发的特性,通过静态检查确保非线程安全的数据结构不会从其原始线程中逃逸。作者解释了这两个特性的关系,并通过例子说明了在异步Rust中,尽管Rust强调无畏并发,但在处理异步编程时仍存在一些限制。特别是,作者提到了一个与Tokio工作窃取运行时结合使用的例子,展示了在异步环境中使用非线程安全数据结构的限制。最后,作者提出了一种更好的spawn方法,以更好地支持异步环境中的非Send类型。

原文链接 https://matklad.github.io/2023/12/10/nsfw.html

for await以及和stream的斗争

for await 上是对当前异步流最常见迭代方式的一种简写,但是在处理并发查询时可能导致其他的问题。

for await item in stream { /* process item */ }

while let Some(item) = stream.next().await { /* process item */ }

作者通过一个实际的批处理作业的例子,作者描述了使用buffered combinator来同时执行多个异步查询时可能出现的问题。具体来说,当一个异步任务的执行时间较长时,可能导致其他任务在等待时长时间内处于暂停状态,从而引发超时问题。作者提出了几种解决方案,涉及到是否在关键位置使用spawn、修改组合器的文档以提醒用户可能的问题,以及是否应该重新设计组合器。文章最后呼吁对异步Rust的原语进行更多的实际测试和实验,并探讨了未来可能的语言特性

原文链接 https://tmandry.gitlab.io/blog/posts/for-await-buffered-streams/

Rust 超越面向对象编程: 第三部分 继承

本文讨论了 继承 在Rust中的角色以及为何它在面向对象编程中可能并不是理想选择的文章。作者通过分析继承的起源和在静态OOP语言中的使用情况,提出了Rust中没有直接的继承概念,而是通过其他方式达到相同效果。文章还讨论了继承对记录类型和模块的影响,并强调了在涉及虚拟方法时继承可能导致的问题。最后,作者提供了一些替代继承的设计模式,以及在Rust中如何更好地表示这些模式。

原文链接 https://www.thecodedmessage.com/posts/oop-3-inheritance/

Rust playgound 现在支持 stdin 输入

Rust Playground现在在执行面板下方添加了一个输入字段。这个字段允许你写入stdin,因此你可以运行类似于Rust书第2章中的猜数字游戏的交互式程序.

猜数字游戏的Playground地址 https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=9c3f8db40093fba040aadd3c7fcdac1e

YDLIDAR Tmini Pro Rust 驱动实现

ydlidar_driver 是 YDLIDAR Tmini Pro(一款激光雷达) 的 Rust驱动. 下面是他的演示效果.

github 地址 https://github.com/tier4/ydlidar_driver
--
From 日报小组 BobQ, FBI小白
社区学习交流平台订阅:
  • Rustcc论坛: 支持rss
  • 微信公众号:Rust语言中文社区

原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-06-11

  • 博文量
    1769
  • 访问量
    718420