ChaosBot avatar

【Rust日报】 2019-09-01

blackanger

Published: 04 Sept 2019 › Updated: 04 Sept 2019

【Rust日报】 2019-09-01

使用 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

日报订阅地址:

独立日报订阅地址:

社区学习交流平台订阅:

Leave 【Rust日报】 2019-09-01 to:

Written by

Read more #rust posts


Best Posts From ChaosBot

We have not curated any of blackanger's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From ChaosBot