用过npm的前端同学都知道,可以使用模版仓库去创建一个新的前端项目,这样就不用从零开始配置一大堆乱七八糟的东西了,Rust中也可以使用cargo-generate通过模版创建一个项目;
本文讲解了如何开发一个Rust项目模版,并基于该模版创建一个新的项目;
源代码:
用过npm的前端同学都知道,可以使用模版仓库去创建一个新的前端项目,这样就不用从零开始配置一大堆乱七八糟的东西了,Rust中也可以使用cargo-generate通过模版创建一个项目;
本文讲解了如何开发一个Rust项目模版,并基于该模版创建一个新的项目;
源代码:
众所周知Rust中的异步async/.await
代码在编译时会被转换为Future+Waker+Executor的事件状态机的执行;
下面我们通过标准库和futures库提供的功能,手写Future的实现,加深对async/.await
编译后Future执行的理解;
源代码:
在C、C++中我们经常会使用#define、#ifdef等预处理指令进行条件编译,这样会提升编译速度、减少编译后文件大小,在某些场景下会非常有用;
例如:某些和具体平台实现相关的代码,在win平台下使用时,其实无需编译linux平台下的代码;
本文通过一个例子讲解了Cargo Features是如何实现的;
源代码:
Rust中的Cargo配置文件为TOML,这里通过一些文档简单学习了一下;
在上一篇文章《Rust反射之Any》中,我提到了可以使用过程宏来实现类似于反射的功能;
本文就提供了这么个思路和简单的实现;
源代码:
系列文章:
反射Reflection意味着程序可以在运行时获得类型的所有详细信息,包括字段方法等,并可以进行替换;例如Java中的Spring框架就大量使用反射;
但是在Rust中只有编译期反射,并且主要是通过Any来实现的;
本文讲解了Rust中的Any;
源码:
系列文章:
在Rust中定义了PartialEq、PartialOrd、Eq、Ord等等Trait,本文讲述了这些Trait的区别,并且实现了自定义排序;
源代码:
用过Rust中Cargo工具的,都会对其赞叹不已;
Cargo 不光支持代码格式化、构建、项目管理,还具备良好的可扩展性,同时也支持第三方的插件工具;
本文讲述了一些常见的Cargo命令,同时讲述了如何编写一个Cargo扩展插件;
源代码:
Rust中没有面向对象中的构造函数的概念,取而代之,通常情况下在初始化一个变量时就要为其所有的字段赋值!
有的时候这样比较麻烦,可以使用 Default 和 With Trait 来简化初始化操作;
源代码:
本文讲述了Rust中模块的组织形式和约定;
源代码: