sled 发布v0.2.0
Sled是一个控制空间光效果的库。这个版本发布说明总结了sled 0.2.0版本的主要变更内容:
为支持no_std系统的错误处理,最低支持Rust版本提升到1.81。
移除了之前已废弃的Scheduler.change_hz()方法,改用Scheduler.set_hz()。
移除了Sled::new_from_string(String)和Config::from_string(String),改用Sled::new_from_str(&str)和Config::from_str(&str)。
增加了对大部分no_std环境的支持,引入了CustomDriver和CustomScheduler等特性。
增加了libm特性标记以支持需要libm的no_std环境。
https://github.com/DavJCosby/sled/releases/tag/0.2.0
ESP32-C3 Embassy 开发示例
这是一个关于在 ESP32-C3 上使用 Embassy 的示例。作者在 GitHub 上提供了一个通用示例,演示了如何使用异步编程来与 I²C 传感器、SPI E-Ink 显示器和 WiFi 时间服务器进行通信。该示例采用 no_std 和无 ESP-IDF 的方式,使用了最新的箱库版本(除了 reqwless)。作者对现有示例感到失望,尤其是因为 esp-hal 及相关库interface在每个版本中都会发生变化,导致示例代码很快就过时了。该作品旨在提供一个更加稳定和现代化的 ESP32-C3 编程示例。
使用Rust开发嵌入式的同学可参考。
https://old.reddit.com/u/claudiomattera
如何实现一个简单但高效的异步 "oneshot" 通道
这篇文章介绍了如何实现一个简单但高效的异步 "oneshot" 通道。oneshot 通道是一种只能发送和接收一个值的通道,常见于异步请求-响应系统中。文章解释了为什么需要 oneshot 通道,描述了其应满足的要求,并逐步实现了一个真实的、无依赖的 async oneshot 通道库。
文章阐述了 oneshot 通道需要满足的几个主要要求:
可靠地发送至多一个值 接收至多一个值 如果所有发送端句柄被丢弃,告知接收端值永远不会到达 接收值的操作应该是异步非阻塞的
接着文章提供了一个初步的实现思路,并解释了为什么需要使用原子操作和条件变量等同步原语。最后,作者逐步优化了实现,提高了性能,并发布到了 crates.io 上供大家使用。
https://amit.prasad.me/blog/async-oneshot
--
From 日报小组 Mike
社区学习交流平台订阅:
Rustcc论坛: 支持rss 微信公众号:Rust语言中文社区