【Rust日报】2023-02-01 将递归重写为迭代
2023-03-07 09:14:42 时间
blaze - Rust 的 OpenCL 库
Rust 编写的 OpenCL 库,终于发布了 v0.1.0 版本。
ReadMore: https://github.com/Aandreba/blaze
将递归重写为迭代
Church-Turing理论的一个结果是,迭代和递归是等价的。这意味着你总是可以把一段使用迭代的代码改写成使用递归的代码,而不改变代码本身的行为,反之亦然。
ReadMore:https://azdavis.net/posts/unrecur/
Aper - 一个用于使用状态机进行数据同步的Rust库
Aper是一个用于使用状态机进行数据同步的Rust库。Aper提供了用状态机表示普通数据结构的机制,以及一个与传输无关的协议,用于保持状态机的多个实例在网络上的同步。
用例包括对共享状态进行操作的实时多人应用程序、希望逐步和双向共享状态更新的客户端-服务器应用程序,以及多人回合制游戏。
例子
use aper::{StateMachine, NeverConflict};
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize, Clone, Debug, Default)]
struct Counter { value: i64 }
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
enum CounterTransition {
Reset,
Increment(i64),
Decrement(i64),
}
impl StateMachine for Counter {
type Transition = CounterTransition;
type Conflict = NeverConflict;
fn apply(&self, event: &CounterTransition) -> Result<Counter, NeverConflict> {
match event {
CounterTransition::Reset => Ok(Counter {value: 0}),
CounterTransition::Increment(amount) => Ok(Counter {value: self.value + amount}),
CounterTransition::Decrement(amount) => Ok(Counter {value: self.value - amount}),
}
}
}
ReadMore:https://github.com/drifting-in-space/aper
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的