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
}
全局变量这玩意儿,有时候还是有用的,方便,对于初始化一次并只读的情况,没有什么问题。
Bloom.sh - 推出了一套(目标是)比肩 Google 服务的平台
网站在这里 bloom.sh。作者野心很大啊。云平台,serverless, 存储,下载,笔记,通讯录,游戏,音乐,画册。。。
有这么大的能力?作者的背景来路不明。
整个平台由Rust语言支撑。在这个网站上线之前,作者已经重写过2次了,也就是说,目前这一版Rust是第三次实现。第一次实现是用Js写的,写出来性能太弱,受不了。然后作者就受Google的市场推销所鼓动,用go写了第二版,速度是提上去了,但是作者觉得go太弱了。很多地方,写起来,不好用,不易扩展。然后第三次,他尝试了Rust,发现Rust太令他热爱了。除了编译时间太长(CI/CD等耗费资源较大),其它真的找不出太多缺点。
构建这种大系统,Rust真是太适合不过了。
Bzip2 要被 Rust 重写了
这个新闻前几天报道过,现在正式被国外新闻网站报道了。看起来事儿小,bzip2 是 Linux 环境相当基础的设施,所以意义还是蛮重大的。
Ferrous 系统公司提出要建立Rust更高级别的稳定发行版 Sealed Rust(密封 Rust)
这个版本的Rust(及其相关库生态)代码,特性要求更严格,专门用于安全敏感领域。比如,汽车电子、工业设备、机器人、医疗设备、航空电子等领域。这是系列文章,第一篇见下面。
使用Rust作为数据结构和算法的教程书要出版了
Rust in 区块链
Rust 在区块链中使用越来越多了,这里做了汇总,月更。另外,rustforce.net 上也有对相关的汇总。
fastuuid - 对 Rust 的UUID 的CPython封装。
给python用的。
kube-rs - k8s 的 Rust 客户端
今天作者又给出了一篇文章介绍。Read More
From 日报小组 @Mike
日报订阅地址:
独立日报订阅地址:
社区学习交流平台订阅:
评论区
写评论还没有评论