反射Reflection意味着程序可以在运行时获得类型的所有详细信息,包括字段方法等,并可以进行替换;例如Java中的Spring框架就大量使用反射;
但是在Rust中只有编译期反射,并且主要是通过Any来实现的;
本文讲解了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中模块的组织形式和约定;
源代码:
本文讲解了如何Rust中进行错误处理;
源代码:
有的时候我们在发布一些Cli工具时,除了明确的版本号之外,还想要添加对应的Git CommitId号;
这个功能可以通过 build.rs 脚本实现;
源代码:
在Go中我们知道,如果程序在运行时发生了panic,如果不使用 recover 恢复,则程序会直接退出;
同样的,在Rust中发生数组越界、unwrap 错误等都会panic;
通常情况下,发生panic之后,rust会中断程序执行并退出;
但是我们也可以指定panic为unwind来展开调用栈,而非中断执行并退出程序;
源代码:
参考:
前一段时间我萌生出了一个想要复刻 Mark Zuckerberg 在 2003年实现的 Facemash 的想法;
并且我学习 Rust 也已经有一段时间了,所以打算使用 Rust 来构建这个项目!
源代码:
更改 cargo 的源来加速;