导航

内容来源于网络

前言

分享Github开源项目,在玩的过程中学习,2023年每天的目标就是研究几个项目,寻找点乐趣。

开源项目

001.fd

一个简单、快速、友好的替代 find 命令的方案

002.rayon

一个易用、无数据竞争的将顺序迭代器转化成并行迭代器。简单说就是原本你的数组只能一个一个地遍历,使用这个库可以并发同时从几个 index 开始遍历,同时也能遍历 map 等类似的数据结构

003.rustlings

该项目通过一个个简单练习小 demo,让初学者学习 Rust 的语法。通过简单的命令即可安装本项目,然后修改每个小练习,达到编译通过或者目标输出,通过后会进入下一关,有种闯关的成就感。

运行方法:

1
2
3
4
5
curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh | bash
# Or if you want it to be installed to a different path:
curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh | bash -s mypath/

rustlings //Run it to get started!
004.hyperfine

命令行基准测试工具。可用来查看和对比命令的耗时,支持多次运行的统计分析、结果导出等功能

005.bat

替代 cat 的命令行工具。你还在命令行用 cat 查看文件吗?那你就 out 啦!今天推荐的 bat 它不仅支持语法高亮,还能展示 Git 的改动。

macOS 下安装命令:brew install bat 相信你用过 bat 后就不会再想用回 cat 了

006.jpeg_tutorial

教你编写 JPEG 解码器的教程

007.fselect

用类 SQL 的命令查找文件的命令行工具

008.azul

一个跨平台的 Rust 和 C/C++ 的 GUI 框架。使用 WebRender 渲染引擎和 CSS/HTML-like DOM 构建,可用于开发漂亮的原生桌面应用程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use azul::prelude::*;
use azul::widgets::{button::Button, label::Label};

struct DataModel {
counter: usize,
}

extern "C"
fn render_dom(data: &mut RefAny, _: &mut LayoutInfo) -> StyledDom {

let data = data.downcast_ref::<DataModel>()?;

let label = Dom::text(format!("{}", data.counter))
.with_inline_style("font-size: 50px;");

let button = Button::new("Increment counter")
.onmouseup(increment_counter, data.clone());

Dom::body()
.with_child(label)
.with_child(button.dom())
.style(Css::empty())
}

extern "C"
fn increment_counter(data: &mut RefAny, _: &mut CallbackInfo) -> Update {
let mut data = data.downcast_mut::<DataModel>()?;
data.counter += 1;
Update::RefreshDom // call render_dom() again
}

fn main() {
let initial_data = RefAny::new(DataModel { counter: 0 });
let app = App::new(initial_data, AppConfig::default());
app.run(WindowCreateOptions::new(render_dom));
}
009.indicatif

样式丰富的 Rust 终端进度条库

010.rustdesk

免费开源的远程桌面软件。开箱即用无需任何配置,支持 Linux/Mac/Win/Android 等平台。还能够自行搭建服务器,由用户自己掌控数据,不必担心隐私数据泄露的问题。在当下越来越多的远程桌面软件都收费的情况下的另一个选择

011.nushell

一种更加人性化的新型 shell

012.toydb

Rust 写的分布式 SQL 数据库实战项目。作为一个学习项目并不适合于生产环境,但通过该项目你可以学习如何用 Rust 实现 Raft 协议、符合 ACID 的事物引擎、SQL 解析、数据持久化等。适合对数据库底层运作原理感兴趣的小伙伴

013.polars

多线程、类 Pandas 的数据处理库。底层采用 Apache Arrow 从而带来了更高效的数据处理性能、占用内存更少、处理速度更快,再加上简单易用的 API,让你在处理大数据集(50GB)时,更加游刃有余。支持 Rust、Python 等语言,值得一试

1
2
3
4
5
6
7
8
9
10
import polars as pl

q = (
pl.scan_csv("iris.csv")
.filter(pl.col("sepal_length") > 5)
.groupby("species")
.agg(pl.all().sum())
)

df = q.collect()
014.lapce

纯 Rust 编写的代码编辑器。基于 Rust 的 Druid 和 Xi-Editor 构建的轻快代码编辑器,内置终端、LSP 协议支持、远程开发、VIM 模式,支持 Windows、Linux、macOS。

015.dnsguide

用 Rust 从头写一个 DNS 服务的教程

016.gitv

由 Rust 编写的 Git 仓库分析和数据可视化的命令行工具

017.cheats.rs

Rust 编程语言小抄。这里不仅有 Rust 基础语法,还有执行顺序详解和编写时需要关注的注意事项。如果你觉得还不够,该项目还包含了示例代码(EX)、书籍(BK)、标准库(STD) 等 Rust 相关资料。

018.py-spy

用 top 的方式分析 Python 程序性能的工具。一款 Python 程序性能分析工具,它可以让你在不重启程序或修改代码的情况,直观地看到 Python 程序中每个函数花费的时间。

1
2
3
4
5
6
7
8
9
10
11
# 安装
pip install py-spy

# record 命令将配置文件记录到文件中,可用来生成火焰图
py-spy record -o profile.svg --pid 进程ID

# top 命令实时展示函数花费时间
py-spy top --pid 进程ID

# dump 命令显示每个 Python 线程的当前调用堆栈
py-spy dump --pid 进程ID
019.reqwest

Rust 语言的 HTTP 客户端。纯 Rust 编写的 HTTP 客户端,简单好用、支持异步、API 友好。

1
2
3
4
5
6
7
8
9
10
11
use std::collections::HashMap;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let resp = reqwest::get("https://httpbin.org/ip")
.await?
.json::<HashMap<String, String>>()
.await?;
println!("{:#?}", resp);
Ok(())
}
020.mdBook

Rust 官方开源的 Markdown 电子书构建工具。类似 Gitbook 可以将 Markdown 文件制作成在线书籍,简单易用非常适合创建教程、课程材料、开源书籍等文稿

021.atuin

神奇的 shell 历史记录工具。该项目通过 SQLite 数据库存储 shell 历史,能够显示更多的 shell 历史、命令运行时间、执行时间等信息,还支持选择、过滤、统计、同步/备份等操作。

1
2
# search for all successful `make` commands, recorded after 3pm yesterday
atuin search --exit 0 --after "yesterday 3pm" make
022.this-week-in-rust

Rust 语言社区的每周摘要。该项目是由 Rust 社区发起,每周发布一期 Rust 相关动态,包括 Rust 语言的文章、视频、音频、开源项目分享,以及本周的更新(PR)、RFC(征求意见)和开发进度。

023.pueue

命令行任务管理工具。一个处理 shell 命令队列的工具,支持后台执行、定时执行、任务并行、暂停任务、任务崩溃恢复等功能。但它只是一个命令行工具,不能当作任务队列来用。

024.easy_rust

用简单的英语写的 Rust 教程。虽然当下已经有很多的 Rust 教程,但是大多都是以英语为主,这对不擅长英语的程序员并不友好,所以作者写了一份仅用简单的英语讲解 Rust 的教程,已有中文翻译版。

025.espanso

Rust 写的智能文本扩展工具。文本扩展器是可以帮你提高输入效率的工具,当你输入一个特定的关键词时,它可以自动检测到并将其替换为预设的内容。这个项目几乎可以和任何程序一起使用,适用于 Windows、macOS 和 Linux。

026.rust-raspberrypi-OS-tutorials

学习如何用 Rust 编写嵌入式操作系统。该教程会从零开始,一步步地指导你如何用 Rust 开发出一个功能齐全的嵌入式操作系统的内核。它包含了实现一般操作系统的任务,例如开发串口控制台、设置虚拟内存和处理硬件异常。教程中的所有代码,均可运行在树莓派 3 和 4 上。

027.spacedrive

一款 Rust 写的跨平台文件管理工具。它基于用 Rust 编写的虚拟分布式文件系统(VDFS),可以将 macOS、Windows、Linux、iOS、Android 等不同操作系统的设备连接到一起,统一管理所有的文件。该项目还处于开发阶段,客户端需要自行编译。

028.difftastic

命令行文件对比工具。一种可根据文件的语法,进行结构化比较的工具,支持 30 多种编程语言。

029.sniffnet

可轻松监控网络流量的工具。这是一个简单、可靠、炫酷的网络监控应用,可以让你一目了然地了解设备的网络流量。

030.websocat

WebSockets 的命令行客户端。一条命令连接或建立 WebSockets 服务,适用于 Windows、macOS、Linux。

031.tui-rs

用来构建丰富的终端用户界面的库

持续更新中…