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

时间:2022-07-24
本文章向大家介绍【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-40c0

via 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, storing Handle<A> and Handle<B> in the same HashSet<HandleUntyped>.

目前我也就只看了资产的部分,比较复杂的处理应该是AssetServer这部分,不过基本都是正常的代码,没有上面这种取巧的地方了。