< 返回版块

Mike 发表于 2019-06-06 17:10

Tags:rust

OnceCell - 用于初始化全局变量的库

之前我们一直在用 lazy_static! 这个库和宏来初始化全局变量,现在不需要宏了。直接用 OnceCell 就可以,像下面这样:

use std::{env, io};
use once_cell::sync::OnceCell;

#[derive(Debug)]pub struct Logger {
    // ...
}
static INSTANCE: OnceCell<Logger> = OnceCell::new();

impl Logger {
    pub fn global() -> &'static Logger {
        INSTANCE.get().expect("logger is not initialized")
    }

    fn from_cli(args: env::Args) -> Result<Logger, std::io::Error> {
       // ...
#      Ok(Logger {})
    }
}

fn main() {
    let logger = Logger::from_cli(env::args()).unwrap();
    INSTANCE.set(logger).unwrap();
    // use `Logger::global()` from now on
}

全局变量这玩意儿,有时候还是有用的,方便,对于初始化一次并只读的情况,没有什么问题。

Repo

Bloom.sh - 推出了一套(目标是)比肩 Google 服务的平台

网站在这里 bloom.sh。作者野心很大啊。云平台,serverless, 存储,下载,笔记,通讯录,游戏,音乐,画册。。。

有这么大的能力?作者的背景来路不明。

整个平台由Rust语言支撑。在这个网站上线之前,作者已经重写过2次了,也就是说,目前这一版Rust是第三次实现。第一次实现是用Js写的,写出来性能太弱,受不了。然后作者就受Google的市场推销所鼓动,用go写了第二版,速度是提上去了,但是作者觉得go太弱了。很多地方,写起来,不好用,不易扩展。然后第三次,他尝试了Rust,发现Rust太令他热爱了。除了编译时间太长(CI/CD等耗费资源较大),其它真的找不出太多缺点。

构建这种大系统,Rust真是太适合不过了。

img

Read More
Read More 2
Repo

Bzip2 要被 Rust 重写了

这个新闻前几天报道过,现在正式被国外新闻网站报道了。看起来事儿小,bzip2 是 Linux 环境相当基础的设施,所以意义还是蛮重大的。

Read More

Ferrous 系统公司提出要建立Rust更高级别的稳定发行版 Sealed Rust(密封 Rust)

这个版本的Rust(及其相关库生态)代码,特性要求更严格,专门用于安全敏感领域。比如,汽车电子、工业设备、机器人、医疗设备、航空电子等领域。这是系列文章,第一篇见下面。

Read More

使用Rust作为数据结构和算法的教程书要出版了

img

源码库

Rust in 区块链

Rust 在区块链中使用越来越多了,这里做了汇总,月更。另外,rustforce.net 上也有对相关的汇总。

Read More

fastuuid - 对 Rust 的UUID 的CPython封装。

给python用的。

Repo

kube-rs - k8s 的 Rust 客户端

今天作者又给出了一篇文章介绍。Read More

Repo


From 日报小组 @Mike

日报订阅地址:

独立日报订阅地址:

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页