【Rust日报】2020-08-27 在Arduino Uno上面跑 Rust 程序

Arduino Uno上面跑 Rust 程序

很久之前,为了在 Arduino上跑 Rust,还必须安装专门经过改造支持 AVR 的 Rust 编译器 :rust-avr 。一个月之前,rust-avr 已经被合并到了 Rust master 分支,这意味着你在 Nightly 下就可以玩 Arduino了。并且包含了一本新书 The AVR-Rust Guidebook :https://book.avr-rust.com/rust-avr 项目官网:https://www.avr-rust.com/这篇文章就是一个教程。https://dev.to/creativcoder/how-to-run-rust-on-arduino-uno-40c0via https://t.me/rust_daily_news/4495

关于Rust用于深度学习的讨论

讨论的挺火热的,就加上来了。地址:https://www.reddit.com/r/rust/comments/igz8iv/deep_learning_in_rust/rust机器学习工作组:https://github.com/rust-ml和其他工作组一样有一个汇总网站:https://www.arewelearningyet.com/可能会用到的库:①、https://github.com/raskr/rust-autograd ②、https://github.com/spearow/juice

Rapier物理引擎的性能测试

Rapier在前两天公布源码的同时还发布了这篇blog。地址:https://www.dimforge.com/blog/2020/08/25/announcing-the-rapier-physics-engine/不仅有和box2d与physx的性能对比测试,这篇blog还将目前的功能与前作nphyscis进行了对比,并表示将在未来几个月将缺失的功能给完善。同时提供了Bevy的官方插件:https://github.com/dimforge/bevy_rapier论文中提到本来也有一个专门给Amethyst引擎实现的插件,但是目前Amethyst正在迁移他们的ECS后端。等这部分工作完成之后,才会给Amethyst提供官方维护的物理引擎插件。

Rust可视化编程的一个小演示

应该是他们可视化底层编程的书要出了,所以放出了这个小演示。地址(需要FQ):https://www.youtube.com/watch?v=zTpzyYtE5oY

前几天的Rustconf 2020,Tikv官网特意做了一个汇总

Read More:https://tikv.org/blog/rustconf-20/

一个新的sql数据库:GlueSQL

现在还处于非常早期的阶段,但是已经支持了基础的SQL查询。地址: https://github.com/gluesql/gluesql

修复include_bytes!

include_bytes!宏大家应该都用过,作者在使用的过程中发现并不是那么好用,有些地方不能达到作者的预期,这篇blog介绍了作者遇到的一些问题,以及作者是如何修复这些问题的。Read More:https://jack.wrenn.fyi/blog/include-transmute/

Rust中的多线程池

作者用Rayon库写了一篇在rust中线程池的一篇教程。Read More:https://pkolaczk.github.io/multiple-threadpools-rust/

Constany:将任何rust函数转换为const函数的crate

库的介绍文档有提到了这个库的一些原理。地址:https://github.com/moelife-coder/constany

Bevy源码学习笔记-001

最近在看Bevy的源码,有些有趣的地方分享给大家。看的比较少,所以只找到一些简短的地方。因为对Bevy的资产处理不是太熟悉,所以优先看了这部分的源码。

// Properties这个宏的部分没看,不过当初看Bevy引擎介绍的时候
// 有说到这个是为了在Rust中实现类似其他语言中反射这种功能而特
// 意设计的
#[derive(Properties)]
pub struct Handle<T>
where
   T: 'static,
{
// pub struct HandleId(pub Uuid);
   pub id: HandleId,
   #[property(ignore)]
   marker: PhantomData<T>,
}

这部分源码我觉得是比较有意思的,因为除了Handle结构体之外,在这部分源码中还实现了另一个结构体:

#[derive(Hash, Copy, Clone, Eq, PartialEq, Debug)]
pub struct HandleUntyped {
   pub id: HandleId,
   pub type_id: TypeId,
}

大部分对Handle的操作方法都是实现在了Handle里的,那实现HandleUntyped的意义在哪里呢?源码自带的注释很好的解释了这一点:This allows handles to be mingled in a cross asset context. For example, storingHandle<A> and Handle<B> in the same HashSet<HandleUntyped>.目前我也就只看了资产的部分,比较复杂的处理应该是AssetServer这部分,不过基本都是正常的代码,没有上面这种取巧的地方了。

推介一个B站Up主

前几天无聊的时候刷到B站一个用Rust刷力扣题目的Up主,视频质量杠杠的。但是一个视频的播放量低的可怜,有兴趣的观众可以关注一波地址:https://space.bilibili.com/202107274/建议从力扣刷题的部分看,我个人认为这是他系列里做的最好的。

This Week in Rust

喜闻乐见的第353期。


上一篇:山东大学 2020级数据库系统 实验四


下一篇:【Rust日报】 2019-06-20:重磅:使用 Rust 进行 GPU 编程的库 Emu