【Rust 日报】2022-11-27 用Rust重写ESLint
用Rust重写ESLint
ESLint 是一个 JS 和 TS 语言的静态分析工具。作者打算重写,期望在其中更多地使用 WebAssembly 和 Rust 来提高性能。
网址:https://tomaszs2.medium.com/nicholas-c-zakas-announced-the-end-of-eslint-code-line-f72c18211666
GitHub:https://github.com/eslint/eslint/discussions/16557
Bevy 0.8到0.9迁移指南
一个手动展示将场景从 bevy 0.8 迁移到 0.9 所需的步骤。
示例代码:https://github.com/PhaestusFox/BevyBasics
视频地址:https://www.youtube.com/watch?v=M3ctrGAa2yw
Anki:卡片记忆工具
Anki 桌面版源代码。
官网:https://apps.ankiweb.net/
GitHub:https://github.com/ankitects/anki
faer-rs:线性代数库
faer 是一个用 Rust 实现的低级别线性代数例程的 crates 集合。目标是为线性代数提供一个功能齐全的库,重点关注可移植性、正确性和性能。看一个矩阵乘法的对比 Benchmark:
n faer faer(par) ndarray nalgebra eigen
32 1.2µs 1.2µs 1.1µs 1.9µs 1.2µs
64 8.1µs 8.1µs 7.8µs 10.8µs 5.1µs
96 28µs 11.1µs 26.1µs 34.1µs 10µs
128 65.9µs 16.5µs 35.2µs 79.2µs 32.5µs
192 218.5µs 53.4µs 53.8µs 257.6µs 52.2µs
256 513.8µs 123µs 154.6µs 603.3µs 143.5µs
384 1.7ms 375.5µs 426.2µs 2ms 328.5µs
512 4.1ms 853.5µs 1.3ms 4.7ms 1ms
640 8ms 1.6ms 2.3ms 9.3ms 1.9ms
768 14ms 2.9ms 3.6ms 16.1ms 3.2ms
896 22.2ms 4.7ms 6.5ms 25.9ms 5.8ms
1024 34.1ms 7.1ms 8.9ms 39.1ms 8.1ms
还有一些矩阵运算的 Benchmark 可以进一步阅读 GitHub。
GitHub:https://github.com/sarah-ek/faer-rs
slice-rbtree
一个 #[no_std]
红黑树,打包在单个字节切片中。允许不反序列化整个树来访问树节点。当内存中有一棵巨大的树,但一次只想与几个值交互时会很有用。
一共有两个核心类型:RBTree
和 RBForest
,以前者为例:
use slice_rbtree::tree::{tree_size, RBTree, TreeParams};
// RBTree 要求输入切片有一个合适大小(每个节点的大小在编译时是可知的)
let size = tree_size(
TreeParams {
k_size: 50,
v_size: 50,
},
10,
);
let mut buffer = vec![0; size];
let mut movie_reviews: RBTree<String, String, 50, 50> =
RBTree::init_slice(&mut buffer).unwrap();
// 插入一些数据
movie_reviews.insert("Office Space".to_string(), "Deals with real issues in the workplace.".to_string());
movie_reviews.insert("Pulp Fiction".to_string(), "Masterpiece.".to_string());
movie_reviews.insert("The Godfather".to_string(), "Very enjoyable.".to_string());
movie_reviews.insert("The Blues Brothers".to_string(), "Eye lyked it a lot.".to_string());
// 检查指定节点
if !movie_reviews.contains_key("Les Misérables") {
println!(
"We've got {} reviews, but Les Misérables ain't one.",
movie_reviews.len()
);
}
// 删除节点
movie_reviews.remove("The Blues Brothers");
// 查找key相关值
let to_find = ["Up!".to_string(), "Office Space".to_string()];
for movie in &to_find {
match movie_reviews.get(movie) {
Some(review) => println!("{movie}: {review}"),
None => println!("{movie} is unreviewed."),
}
}
// 遍历
for (movie, review) in movie_reviews.pairs() {
println!("{movie}: \"{review}\"");
}
与 BTreeMap 的 Benchmark:
BTreeMap | RBTree | |
---|---|---|
Deserialize 10 elements | 472 ns | 13 ns |
Deserialize 1280 elements | 109'000 ns | 13 ns |
Access one element in the tree of 10 elements | 10 ns | 23 ns |
Access one element in the tree of 1280 elements | 19 ns | 33 ns |
Insert one element in the tree of 10 elements | 78 ns | 147 ns |
Insert one element in the tree of 1280 elements | 106 ns | 239 ns |
GitHub:https://github.com/solcery/slice-rbtree
Rust Web API模板
一个旨在说明如何使用 Rocket,Diesel 和 rocket_opapi 的项目。
GitHub:https://github.com/DilecPadovani/rocket_diesel_demo
From 日报小组 长琴
社区学习交流平台订阅:
- Rustcc 论坛:支持 rss
- 微信公众号:Rust 语言中文社区
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的