iocraft - 一个用于在终端或日志中创建漂亮的文本输出和界面的 Rust 库

iocraft 是一个用于在终端或日志中创建漂亮的文本输出和界面的 Rust 库。它提供了一个声明式的 API,可以轻松构建复杂的布局和交互元素。主要特性包括:

  1. 使用简洁可读的语法定义 UI。

  2. 使用 flexbox 布局组织 UI 元素。

  3. 将有色且样式化的 UI 输出到终端或任何支持 ASCII 的地方。

  4. 创建动画或交互元素,并添加事件处理和钩子。

  5. 轻松构建全屏终端应用程序。

  6. 通过引用传递属性和上下文,避免不必要的克隆。

iocraft 借鉴了 React 的概念,但针对文本输出,并使用 Rust 语言实现。使用 element! 宏声明 UI 元素,库提供了一些内置组件如 Box、Text 和 TextInput,也可以使用 #[component] 宏定义自定义组件。该库受到 Dioxus 和 Ink 的启发,并采用 Apache 2.0 或 MIT 许可证授权。

https://github.com/ccbrown/iocraft

使用Rust和Bevy开发roguelike游戏

这篇博客文章介绍了如何使用Rust编程语言和Bevy游戏引擎开发传统的roguelike游戏的第一步,即绘制玩家角色。主要内容包括:

  1. 解释了传统roguelike游戏的特点和吸引力。

  2. 介绍了Bevy的基本概念,如App、实体(Entity)、组件(Component)和系统(System)。

  3. 创建了一个新的Rust项目,并在其中添加了Bevy依赖库。

  4. 定义了"生物"(Creature)组件包,用于表示玩家和其他生物。

  5. 编写了生成玩家角色的system函数。

  6. 添加了摄像机系统,让玩家角色可见。

  7. 引入了精灵表(SpriteSheet)和图集(TextureAtlasLayout)的概念,用于管理游戏中所有生物的精灵图像。

  8. 将精灵表相关组件整合到"生物"包中。

https://oneirical.github.io/1-drawing-the-player/

skiplist-rust - Rust的跳表实现

这个项目提供了一个并发、无锁的跳表实现,可用于高效的键值存储和检索。主要特性包括:

  • 无锁并发操作

  • 高效的插入和查找

  • 支持迭代遍历

  • 可配置最大高度和分支因子

  • 使用安全的Rust编写,只有少量unsafe代码

使用方式是在Cargo.toml中添加依赖,然后在Rust代码中使用SkipList相关API进行键值插入、检查存在性、遍历等操作。

该项目的API包括SkipList的创建、插入键值、检查键是否存在、获取迭代器等;SkipListIterator则提供了创建、检查有效性、获取当前键值、前移后移、查找目标键值等操作。

性能方面,该实现旨在提供与LevelDB的SkipList相似的性能特征,使用原子操作实现并发访问,并采用类似的概率平衡策略。

https://github.com/monadbobo/skiplist-rust

谷歌消除安卓系统内存安全漏洞的努力和进展

主要内容包括:

  1. 内存安全漏洞一直是软件安全的主要威胁。谷歌认为,通过安全编码(Safe Coding)的方式,即过渡到使用内存安全语言,可以从根源上消除这一类漏洞,并构建高保证的软件。

  2. 模拟显示,随着时间推移,即使代码库中存在内存不安全的代码,只要新代码使用内存安全语言,漏洞数量也会显著下降。这是因为漏洞会随时间呈现指数级衰减。

  3. 在实践中,自2019年起,安卓团队开始优先使用内存安全语言进行新的开发。尽管大部分代码仍然是不安全的,但内存安全漏洞的总数和比例都持续下降。2019年内存安全漏洞占76%,而2024年只占24%。

  4. 消除内存安全漏洞的策略经历了四个阶段:1)被动修补;2)主动缓解;3)主动发现;4)高保证预防(安全编码)。安全编码不仅改变了技术,更改变了安全方法,可以大规模、持续、高效地提供保证。

  5. 采用安全编码可以打破无休止的攻防对抗循环,使高保证内存安全成为常规,并提高开发人员生产力。

https://security.googleblog.com/2024/09/eliminating-memory-safety-vulnerabilities-Android.html?m=1

--

From 日报小组 Mike

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss

  • 微信公众号:Rust语言中文社区

Logo

欢迎加入西安开发者社区!我们致力于为西安地区的开发者提供学习、合作和成长的机会。参与我们的活动,与专家分享最新技术趋势,解决挑战,探索创新。加入我们,共同打造技术社区!

更多推荐