文章目录
- 1 导航
- 2 前言
- 3 开源项目
- 3.0.0.1 001.fd
- 3.0.0.2 002.rayon
- 3.0.0.3 003.rustlings
- 3.0.0.4 004.hyperfine
- 3.0.0.5 005.bat
- 3.0.0.6 006.jpeg_tutorial
- 3.0.0.7 007.fselect
- 3.0.0.8 008.azul
- 3.0.0.9 009.indicatif
- 3.0.0.10 010.rustdesk
- 3.0.0.11 011.nushell
- 3.0.0.12 012.toydb
- 3.0.0.13 013.polars
- 3.0.0.14 014.lapce
- 3.0.0.15 015.dnsguide
- 3.0.0.16 016.gitv
- 3.0.0.17 017.cheats.rs
- 3.0.0.18 018.py-spy
- 3.0.0.19 019.reqwest
- 3.0.0.20 020.mdBook
- 3.0.0.21 021.atuin
- 3.0.0.22 022.this-week-in-rust
- 3.0.0.23 023.pueue
- 3.0.0.24 024.easy_rust
- 3.0.0.25 025.espanso
- 3.0.0.26 026.rust-raspberrypi-OS-tutorials
- 3.0.0.27 027.spacedrive
- 3.0.0.28 028.difftastic
- 3.0.0.29 029.sniffnet
- 3.0.0.30 030.websocat
- 3.0.0.31 031.tui-rs
导航
- Github开源项目之:C
- Github开源项目之:C#
- Github开源项目之:C++
- Github开源项目之:CSS
- Github开源项目之:GO
- Github开源项目之:Java
- Github开源项目之:JavaScript
- Github开源项目之:Kotlin
- Github开源项目之:Objective-C
- Github开源项目之:Python
- Github开源项目之:Ruby
- Github开源项目之:Rust
- Github开源项目之:Swift
- Github开源项目之:PHP
- Github开源项目之:人工智能
- Github开源项目之:开源书籍
- Github开源项目之:其他相关
内容来源于网络
前言
分享Github开源项目,在玩的过程中学习,2023年每天的目标就是研究几个项目,寻找点乐趣。
开源项目
001.fd
一个简单、快速、友好的替代 find 命令的方案
002.rayon
一个易用、无数据竞争的将顺序迭代器转化成并行迭代器。简单说就是原本你的数组只能一个一个地遍历,使用这个库可以并发同时从几个 index 开始遍历,同时也能遍历 map 等类似的数据结构
003.rustlings
该项目通过一个个简单练习小 demo,让初学者学习 Rust 的语法。通过简单的命令即可安装本项目,然后修改每个小练习,达到编译通过或者目标输出,通过后会进入下一关,有种闯关的成就感。
运行方法:
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 构建,可用于开发漂亮的原生桌面应用程序
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 等语言,值得一试
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 程序中每个函数花费的时间。
# 安装
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 友好。
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 历史、命令运行时间、执行时间等信息,还支持选择、过滤、统计、同步/备份等操作。
# 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
用来构建丰富的终端用户界面的库
持续更新中...