使用 React, Gatsby 和 Wavelet 构建一个去中心化的博客
Wavelet 是 perlin-network 的一个子项目。
Wavelet is an open ledger for writing scalable mission-critical, decentralized WebAssembly application (https://wavelet.perlin.net/).
作者尝试了基于 wavelet 来构建一个去中心化的博客,也算是迈向 w3 过程中的一个尝试。
Read More: https://docs.qq.com/doc/DQkZhQ2lEVGVlTlNO
根据版本来编译分支代码?
if_rust_version 是这样一个项目,可以根据 rust 的版本,来编译运行不同分支中的代码。像下面这样:
if_rust_version! { >= 1.36 {
let mut x = std::mem::MaybeUninit::<u32>::uninit();
unsafe { x.as_mut_ptr().write(32); }
let xx = unsafe { x.assume_init() };
} else {
let mut xx : u32 = unsafe { mem::uninitialized() };
unsafe { ptr::write(&mut xx as *mut u32, 32); }
}}
Repo: https://github.com/ogoffart/if_rust_version
SOUNDSENSE-RS - SoundSense 的 Rust 复刻版
SoundSense 是 《矮人要塞(Dwarf Fortress)》的声音引擎,作者用 Rust 重写了(Rust重写一切!)。
Repo: https://github.com/prixt/soundsense-rs
default-boxed - 让结构体定义的时候,直接分配在堆上
通常,Rust 对于编译时已知大小的结构体,都默认在栈上分配内存。在实际编码过程中,往往存在向堆中复制的过程。这会降低效率,而这个库提供了标注:#[derive(DefaultBoxed)] ,可以使得被标注的结构体直接在堆上分配内存。像下面这样:
use default_boxed::DefaultBoxed;
#[derive(DefaultBoxed)]
struct Foo {
a: Bar,
b: [Bar; 1024 * 1024],
c: [u32; 1024 * 1024],
}
struct Bar(u16);
impl Default for Bar {
fn default() -> Bar {
Bar(29)
}
}
#[test]
fn test_basic() {
let foo = Foo::default_boxed();
assert_eq!(foo.a.0, 29);
}
Repo: https://github.com/upsuper/default-boxed
又一个 brainfuck 编译器 - nerve
编译到 X86 指令集上,算是一个练手项目。
Repo: https://github.com/JoshMcguigan/nerve
envopt - 把环境变量解析到结构体中
思路类似 structopt,不过这次是解析环境变量,其实很简单,就看你想不想得到,这是一种设计模式。
use envopt::EnvOpt;
#[derive(EnvOpt)]
pub enum EnvOpts {
#[envopt(name = "FOO")]
Foo,
#[envopt(name = "BAR", default = "default-bar")]
Bar,
}
pub fn main() {
EnvOpts::validate_or_exit();
println!("FOO: {}", EnvOpts::Foo.value_or_exit());
println!("BAR: {}", EnvOpts::Bar.value_or_exit());
}
Repo: https://github.com/zoranzaric/envopt
From 日报小组 Mike
日报订阅地址:
独立日报订阅地址:
社区学习交流平台订阅: