/Understanding_in_Rust

【最安全的编程语言】Rust工程师枕边资料,大牛文章,开源框架,官方文档,视频,推荐书籍,学习干货,大牛语录

🏄💨【最安全的编程语言】Rust工程师枕边资料,大牛文章,开源框架,官方文档,视频,推荐书籍,学习干货,大牛语录

rust

一个安全、并发、实用的系统语言



🏝
     环境搭建    
📕
    入门秘笈   
📖
    推荐书籍   
📑
精选文章
📰
官方文档

杂货铺
💽
视频
🏗
开源框架
🐂
大牛语录


🤔 Why Rust?Why can?

Jay Oster, PubNub 架构师 :

“除了安全和性能,我们还有:

  • 泛型;
  • 特征;
  • 代数类型;
  • 函数式和命令式范式;
  • 可能是世界上最好的依赖管理和构建工具,实际上解决了‘依赖地狱’问题;
  • 对内嵌文档、测试和性能评测的美妙支持;
  • 一个大的且正在生长的库、抽象、工具生态;
  • 过程宏;
  • 与已有代码的 FFI 交互性;
  • 支持一打平台(更多的在路上!);
  • 对开发者体验是正向的、毋庸置疑的满足。

Rust 是唯一一个下面所有框框都打勾的语言:

  • 内存安全
  • 类型安全
  • 消除数据竞争
  • 使用前编译
  • 建立(并且鼓励)在零抽象之上
  • 最小的运行时(无停止世界的垃圾搜集器,无 JIT 编译器,无 VM)
  • 低内存占用(程序可以运行在资源受限的环境,比如小的微控制器)
  • 裸金属目标(比如,写一个 OS 内核或者设备驱动,把 Rust 当一个 ‘高层’汇编器使用)”

Peter Varo:

“Rust 有一个很香的地方:它像 C 和 C++ 那样底层,因此也具有底层的这些优势(比如,控制、大小、速度等)。同时呢,它又像 Haskell 那样高层,自带令人吃惊的大量功能传承。它还是命令式的,所以容易被大多数人上手。然后它又像 Python 一样灵活,比如,' 鸭子类型(duck-typing)' 的概念出现在编译时(比如,特征限定),然后它又没有陈旧的面向对象模型以及由这个模型导致的各种出名的问题。

最后但很重要的是,还有一连串的东西被包含进来:精简短小的语法,语言提供的数目不多的特性,标准库及其一致性,高质量的文档的集成,包括对初学者和高级用户都适用的学习材料,这些都是促成因素。”

🏝 环境搭建

安装及工具:https://www.rust-lang.org/zh-CN/learn/get-started

📕 入门秘笈 (PDF档下载)

📖 推荐书籍

国内书籍

国外书籍

入门书籍

欢迎!本书将教你有关 Rust 编程语言的知识。Rust 是一种系统编程语言,专注于三个目标:安全性、速度和并发性。它在没有垃圾收集器的情况下实现了这些目标,使其成为其他语言不擅长的许多用例的有用语言:嵌入其他语言、具有特定空间和时间要求的程序以及编写低级代码,例如设备驱动程序和操作系统。它通过在不产生运行时开销的情况下进行大量编译时安全检查,同时消除所有数据竞争,从而改进了针对此空间的当前语言。Rust 还旨在实现“零成本抽象”,尽管其中一些抽象感觉像是高级语言的抽象。即便如此,Rust 仍然允许像低级语言一样进行精确控制。

这是 Rust-101,一个 Rust 语言的小教程。它旨在成为一门交互式的动手课程:我相信真正学习一门语言的唯一方法是在其中编写代码,因此您应该在课程中进行编码。如果您有任何未在此处回答的问题,请查看下面的“其他资源”。尤其是,IRC 频道里挤满了愿意帮助你的很棒的人!我在那里花了很多时间 ;-) 我假设对编程有一定的了解,因此不会解释大多数语言共有的基本概念。相反,我将专注于 Rust 的特殊之处。

Rust by Example (RBE) 是一组可运行的示例,用于说明各种 Rust 概念和标准库。

尽管自 40 多年前引入 C 以来,系统编程语言已经有了很大的发展,但我们对造成巨大后果的愚蠢错误的能力仍然没有改变,新闻中经常有生动的例子。这份 O'Reilly 报告研究了 Rust,这是一种新的系统编程语言,它将安全性和安全性与性能相结合,与 C 和 C++ 相当。

Rust 是一种高度并发和高性能的语言,专注于安全和速度、内存管理和编写干净的代码。它还保证线程安全,其目的是提高现有应用程序的性能。它得到了 Mozilla 的支持,以解决并发的关键问题。

学习在 Unix、Linux shell、macOS 和 Windows 命令行上以简单、循序渐进的方式使用 Rust 进行编程。当您阅读本书时,您将建立在您在前几章中获得的知识的基础上,并了解 Rust 提供了什么。

开始 Rust 从 Rust 的基础开始,包括如何命名对象、控制执行流和处理原始类型。您将看到如何进行算术运算、分配内存、使用迭代器以及处理输入/输出。一旦掌握了这些核心技能,您将着手处理错误并使用 Rust 的面向对象特性立即构建健壮的 Rust 应用程序。

只需要基本的编程知识,最好是 C 或 C++。要理解这本书,知道什么是整数和浮点数,以及区分标识符和字符串文字就足够了。

本书将帮助您理解 Rust 语言的核心概念,使您能够通过整合零成本抽象和更好的内存管理等功能来开发高效和高性能的应用程序。深入研究 Rust 中的高级概念,例如错误处理、宏、包和并行性。在本书的最后,学习如何创建 HTTP 服务器和 Web 服务,在服务器端编程方面建立强大的基础知识,并能够提供使用 Rust 构建高性能和更安全的生产级 Web 应用程序和服务的解决方案。

Mozilla 的 Rust 以其惊人的功能和强大的库而备受关注。本书将带您了解各种秘诀,教您如何利用标准库来实现高效的解决方案。

本书首先简要介绍了标准库和馆藏的基本模块。从这里开始,食谱将涵盖通过解析支持文件/目录处理和交互的包。您将了解与高级数据结构、错误处理和网络相关的包。您还将学习使用期货和实验性夜间功能。这本书还涵盖了 Rust 中最相关的外部 crate。

Rust 足够低级,可以提供对内存的细粒度控制,同时通过编译时验证提供安全性。这使得它特别适合编写低级网络应用程序。

本书分为三个主要部分,将带您踏上构建功能齐全的 Web 服务器的激动人心的旅程。本书首先对 Rust 和基本的网络概念进行了扎实的介绍。这将为整本书奠定基础并定下基调。在第二部分中,我们将深入研究如何使用 Rust 开发网络软件。从使用套接字的客户端-服务器网络到 IPv4/v6、DNS、TCP、UDP,您还将了解使用 serde 序列化和反序列化数据。这本书展示了如何通过 HTTP 与 REST 服务器进行通信。本书的最后一部分讨论了使用 Tokio 堆栈进行异步网络编程。鉴于安全对于现代系统的重要性,您将看到 Rust 如何支持常见的原语,例如 TLS 和公钥加密。

从介绍 Rust 开始,您将学习基本方面,例如其语法、数据类型、函数、泛型、控制流等。在此之后,您将直接开始构建您的第一个项目,俄罗斯方块游戏。接下来,您将使用 Tokio(可扩展且高效的异步 IO Rust 库)构建图形音乐播放器并使用快速、可靠的网络软件。

在本书的过程中,您将探索 Rust 编程的各种特性,包括它的 SDL 特性、事件循环、文件 I/O 和著名的 GTK+ 小部件工具包。通过这些项目,您将看到 Rust 在并发方面的表现——包括并行性、可靠性、改进的性能、泛型、宏和线程安全。我们还将介绍 Rust 的一些异步和反应式编程方面。

熟悉使用流行的新系统编程语言编写程序,这些语言将低级语言的强大性能与多线程代码中的线程安全等高级功能结合在一起。

Rust in Action 是一本面向想要探索 Rust 编程语言世界的中级程序员的书。它适用于可能已经用尽网络上的免费资料但仍想了解更多信息的人。它与 Rust 编程的其他材料不同,因为它还教您有关系统编程的知识。您将能够更多地了解 CPU 的工作原理、计算机如何计时、指针是什么以及您的网卡和键盘如何告诉 CPU 它们已准备好读取输入。

从系统编程书籍的角度来看,它实际上也是独一无二的 - 因为几乎每个示例都适用于 Windows!如果你是那种喜欢实际例子的学习者,你会喜欢阅读这本书。

Rust 是一种静态和强类型的系统编程语言。静态意味着所有类型在编译时都是已知的,强烈意味着这些类型旨在使编写不正确的程序变得更加困难。一个成功的编译意味着你可以比使用像 C 这样的牛仔语言更好地保证正确性。系统意味着生成最好的机器代码,并完全控制内存使用。因此,其用途非常核心:操作系统、设备驱动程序和甚至可能没有操作系统的嵌入式系统。然而,它实际上也是一种非常令人愉快的语言,可以用来编写普通的应用程序代码。

与 C 和 C++ 的最大区别在于 Rust 默认是安全的;检查所有内存访问。意外损坏内存是不可能的。

Rust 中的机器学习已经被社区忽视了很长一段时间。由于宇宙中散布着许多不同的板条箱,这本书试图统一所有的信息和用法,并在某种程度上动摇社区采取行动。数据是新的前沿领域,而 Rust 必须成为其中的一部分。

阅读了使用 Rust 的实用机器学习之后,您将对使用 Rust 创建高计算库有一个深入的了解。掌握了这种神奇语言的知识,您将能够创建性能更高、内存安全且资源占用更少的应用程序。

Rust Web Development 是使用 Rust 构建基于服务器的 Web 应用程序的实践指南。如果您使用 Java、C# 或 PHP 构建了 Web 服务器,您会立即爱上 Rust 提供的性能和开发体验。本书向您展示了如何使用纯 Rust 以及重要的 Rust 库(例如用于异步运行时的 tokio、用于 Web 服务器和 API 的 warp 以及运行外部 HTTP 请求的 reqwest 等)高效工作。

您可以将这本书交给新聘用的开发人员,并让他们使用这本书。它包含非常实用的示例和模式,并为未来探索该主题奠定了坚实的基础。

进阶书籍

本书深入探讨了编写正确的不安全 Rust 程序所需的所有可怕细节。由于这个问题的性质,它可能会导致释放出无法言喻的恐怖,将你的心灵粉碎成十亿个无限小的绝望碎片。

如果您希望编写 Rust 程序的职业生涯长久而快乐,那么现在您应该回过头来忘记您曾经看过这本书。这不是必要的。但是,如果您打算编写不安全的代码——或者只是想深入了解语言的本质——这本书包含了宝贵的信息。

这本实用的书向系统程序员介绍了 Rust,一种新的前沿语言。您将了解 Rust 如何提供静态验证的内存安全和低级控制的罕见且有价值的组合——想象一下 C++,但没有悬空指针、空指针取消引用、泄漏或缓冲区溢出。

本书首先论证了 Rust 在当今编程语言领域的独特地位。安装 Rust 并学习如何使用它的包管理器 Cargo。逐步介绍各种概念:变量、类型、函数和控制结构,以打下基础。然后探索更多结构化数据,例如字符串、数组和枚举,并了解模式匹配的工作原理。

在这一切中,本书强调了 Rust 编译器用来生成安全代码的独特推理方式。接下来看看 Rust 特定的错误处理方式,以及特征在 Rust 代码中的整体重要性。在我们探索各种指针类型时,将深入探讨内存安全的支柱。接下来,看看宏如何简化代码生成,以及如何使用模块和板条箱组合更大的项目。最后,了解我们如何在 Rust 中编写安全的并发代码并与 C 程序接口,了解 Rust 生态系统,并探索标准库的使用。

本书将教你如何在现代机器上管理程序性能,并在 Rust 中构建快速、内存安全和并发的软件。它从 Rust 的基础开始,讨论机器架构概念。您将了解如何系统地衡量和改进 Rust 代码的性能,以及如何自信地编写集合。您将了解应用于线程的 Sync 和 Send 特性,并使用锁、原子原语、数据并行等来协调线程执行。

本书将向您展示如何在 C++ 代码中有效地嵌入 Rust,并探索用于多线程应用程序的各种 crate 的功能。它深入探讨了实现。您将了解互斥锁的工作原理并自行构建多个互斥锁。您将掌握生态系统中存在的完全不同的方法来构建和管理大规模系统。

函数式编程允许开发人员将程序划分为更小的、可重用的组件,从整体上简化软件的创建、测试和维护。结合 Rust 的强大功能,您可以开发满足现代软件需求的强大且可扩展的应用程序。本书将帮助您发现可用于以功能方式构建软件的所有 Rust 功能。

我们首先对针对不同问题和模式的函数式方法和面向对象方法进行简要比较。然后我们快速查看控制流的模式、数据以及这些函数式编程独有的抽象。下一部分介绍如何在 Rust 中创建功能性应用程序;还讨论了 Rust 独有的可变性和所有权。接下来检查纯函数,您将掌握闭包、它们的各种类型和柯里化。我们还通过功能设计原则和使用宏的元编程来实现并发。最后,我们看看调试和优化的最佳实践。

读完本书,您将熟悉函数式编程方法,并能够在日常工作中使用这些技术。

有时,很难从 Rust 中获得最佳性能。这本书教你将你的 Rust 代码的速度优化到 C/C++ 等语言的水平。您将了解并修复常见的陷阱,了解如何通过使用元编程来提高生产力,并通过安全轻松地并发执行部分代码来加速代码。您将掌握这门语言的特性,这将使您脱颖而出,并使用它们来真正提高算法的效率

本书以一个温和的介绍开始,以帮助您识别 Rust 编程时的瓶颈。我们重点介绍了常见的性能缺陷,以及及早发现和解决这些问题的策略。我们继续掌握 Rust 的类型系统,这将使我们能够在编译时在性能和安全性方面进行令人印象深刻的优化。然后,您将学习如何在 Rust 中有效地管理内存,掌握借用检查器。我们继续测量性能,您将看到这如何影响您编写代码的方式。继续前进,您将在 Rust 中执行元编程,以提高代码的性能和生产力。您最终将学习 Rust 中的并行编程,它通过使用多线程和异步编程实现高效和更快的执行。

如果您想学习如何使用 Rust 进行后端开发,这里就是您的最佳选择。

Rust 的采用率达到了历史最高水平:越来越多的公司正在尝试和招聘。
如果您对使用 Rust 构建 API 感兴趣,零到生产是您 Rust 之旅的理想起点。
您将边做边学:我们将从头开始,一步一步地构建一个功能齐全的电子邮件通讯后端 API。

您将学习:

1、导航和利用 Rust 的 crates 生态系统
2、构建您的应用程序以使其模块化和可扩展
3、编写测试,从单个单元到成熟的集成测试
4、使用类型系统为您的域建模以强制执行不变量
5、收集日志、跟踪和指标以观察应用程序的状态
6、为您的 Rust 项目设置一个强大的持续集成和持续部署管道

WebAssembly 不仅仅是一项革命性的新技术。它正在重塑我们为 Web 及其他领域构建应用程序的方式。在 ActiveX 和 Flash 等技术失败的地方,您现在可以使用您喜欢的任何语言编写代码并编译为 WebAssembly,以便在浏览器、移动设备、嵌入式设备等中运行的快速、类型安全的代码。将 WebAssembly 的便携、高性能模块与 Rust 的安全性和强大功能相结合,是一个完美的开发组合。

了解 WebAssembly 的堆栈机器架构如何工作,安装低级 wasm 工具,并发现编写原始废弃代码的黑暗艺术。在此基础上构建并学习如何通过实现跳棋游戏的逻辑从 Rust 编译 WebAssembly 模块。在 Rust 中创建 wasm 模块,以多种引人注目的方式与 JavaScript 进行互操作。将您的新技能应用于非网络主机的世界,并创建从在 Raspberry Pi 上运行的控制照明系统的应用程序到功能齐全的在线多人游戏引擎,开发人员可以上传他们自己的竞技场绑定 WebAssembly 战斗模块.

立即开始使用 WebAssembly,并改变您对 Web 的看法。

从基本的编程模式到深入了解该语言,Step Ahead with Rust 旨在帮助您从编写程序到使用 Rust 构建软件。本书将向您展示 Rust 语言最重要的特性,包括货物、类型系统、迭代器等。读完本书,您应该会熟悉更多内容,并准备好处理其余的高级主题。

在您阅读本书的过程中,我们建议您花时间尝试一下书页中所呈现的内容。这本书都是关于 Rust 的实际应用,所以在实践中应用它是值得期待的。本书涵盖:货物、Rust 类型系统、迭代器、宏、所有权、借用和生命周期、不安全模式、并发。A Step Ahead with Rust 读者应该是一位经验丰富的开发人员,希望提高他们的 Rust 开发技能。

了解 Rust 编程语言的最新特性、有用的库和框架的实用指南,将帮助您设计和开发有趣的项目

学习:

1、访问 TOML、JSON 和 XML 文件以及 SQLite、PostgreSQL 和 Redis 数据库
2、使用 JSON 有效负载开发 RESTful Web 服务
3、使用 HTML 模板和 JavaScript 创建 Web 应用程序,使用 WebAssembly 创建前端 Web 应用程序或 Web 游戏
4、构建桌面 2D 游戏
5、为编程语言开发解释器和编译器
6、创建机器语言模拟器
7、使用可加载模块扩展 Linux 内核

📑 大牛文章

📰 官方文档

✈ 杂货铺

💽 视频

Rust 验证研讨会 2021
Peeking at compiler-internal data (for fun and profit)
Ferrite- A Rust EDSL for Message-passing Protocol Verification
Verifying that Rust programs don't crash
crux-mir- Symbolic testing for Rust
RustBelt- A Quick Dive Into the Abyss
Rustv- Semi-automatic Verification of Unsafe Rust Programs
Polonius
Towards Automatic Verification of Unsafe Rust with Constrained Horn Solvers
Rust interest in safety- and mission-critical environments
Prusti – Deductive Verification for Rust
Creusot- A prototype tool for verification of Rust software
hacspec_ succinct, executable, verifiable specifications for high-assurance cryptography
Leveraging Compiler Intermediate Representation for Multi- and Cross-Language Verification

Rust Linz 2021
Rust Linz, July 2021 - Stefan Baumgartner - Serverless Rust
Rust Linz, July 2021 - Rainer Stropek - Traits, not your grandparents' interfaces
Rust Linz, August 2021 - Rainer Stropek - Rust iterators
Rust Linz, May 2021 - Harald Reingruber - Rust for Medical Visualization
Rust Linz, May 2021 - Lisa Passing - Creative Rust
Rust Linz, June 2021 - Tim McNamara - How to learn Rust
Rust Linz, June 2021 - JT - A new path for your shell
Rust Linz x Global Azure, April 2021 - Ryan Levick & Thomas Taylor - Rust, Kubernetes, and the Cloud
Rust Linz, April 2021 - Jan-Erik Rediger - Leveraging Rust to build cross-platform libraries
Rust Linz, April 2021 - Herbert Wolverson - Learning Rust with Game Development - YouTube

🏗 开源框架

值得新手关注的Rust项目

  • mini redis - 不完整的Redis客户端和服务器实现使用Tokio -仅为学习目的
  • async-graphql - 一个在Rust中实现的GraphQL服务器库

应用程序

音频和音乐技术

  • enginesound — 用于按程序生成半逼真引擎声音的 GUI 和命令行应用程序. 具有深度配置、可变采样率和频率分析窗口.
  • indiscipline/zrtstr — 用于检查立体声 wav 文件是否为仿立体声(即具有相同通道)并将此类文件转换为单声道的命令行实用程序.
  • Lyriek — 一个多线程 GTK 3 应用程序,用于获取当前播放歌曲的歌词.
  • Phate6660/musinfo — 从 mpd 查询音乐信息并将其显示在通知中的程序.
  • Phate6660/rsmpc — mpc 的实现,但不是直接实现,因为会有一些差异.
  • Phate6660/rsmpc — 用于 mpd 的 gtk 前端.
  • Polaris — 音乐流媒体应用程序.
  • Spotify TUI — 一个用 Rust 编写的用于终端的 Spotify 客户端.
  • Spotifyd — 作为 UNIX 守护程序运行的开源 Spotify 客户端.

加密数字货币

  • Bitcoin Satoshi's Vision — 用于处理比特币 SV 的 Rust 库.
  • cardano-cli — 卡尔达诺命令行界面 (CLI)
  • ChainX — Polkadot 上完全去中心化的链间加密资产管理.
  • CITA — 面向企业用户的高性能区块链内核.
  • coinbase-pro-rs — Rust 中的 Coinbase pro 客户端,支持同步 / 异步 / websocket
  • ethaddrgen — 用 Rust 制作的自定义以太坊虚地址生成器
  • Grin — MimbleWimble 协议的演变
  • hdwallet — BIP-32 HD 钱包相关的密钥推导实用程序.
  • Holochain — 区块链的可扩展 P2P 替代方案,适用于您一直想要构建的所有分布式应用程序. 旧仓库的链接是 this 不再维护.ibc-rs - Rust 的实现 Interblockchain Communication 协议
  • infincia/bip39-rs — BIP39 的 Rust 实现.
  • Joystream — 一个用户管理的视频平台
  • Diem — Diem 的使命是建立一个简单的全球货币和金融基础设施,为数十亿人赋能.
  • Lighthouse — Rust Ethereum 2.0 客户端
  • near/nearcore — 用于低端移动设备的去中心化智能合约平台.
  • Nervos CKB — Nervos CKB 是一个公共的免许可区块链,是 Nervos 网络的公共知识层.
  • Nimiq — Nimiq 节点的 Rust 实现
  • Parity-Bitcoin — Parity 比特币客户端
  • Parity-Bridge — 任何两个基于以太坊的网络之间的桥梁
  • Parity-Ethereum — 快速、轻便、强大的以太坊客户端
  • Parity-Zcash — Zcash 协议的 Rust 实现
  • Phala-Network/phala-blockchain — 基于 Intel SGX 和 Substrate 的机密智能合约区块链
  • Polkadot — 具有集中安全性的异构多链技术
  • rbtc — 将 BTC 转换为任何货币,反之亦然.
  • rust-cardano — Cardano 原语、助手和相关应用程序的 Rust 实现
  • Substrate — 用 Rust 编写的通用模块化区块链模板
  • tendermint-rs - Tendermint 区块链数据结构和客户端的 Rust 实现
  • wagyu [wagyu] — 用于生成加密货币钱包的 Rust 库
  • zcash — Zcash 是 “Zerocash” 协议的实现.
  • YeeCo yeeroot — YeeCo yeeroot 是一个无需许可、安全、高性能和可扩展的公共区块链平台,由基于 Rust 编写的 PoW 共识的全分片技术提供支持

数据库

  • indradb — 基于 Rust 的图形数据库
  • Materialize - 由 Timely Dataflow 提供支持的流式 SQL 数据库:heavy_dollar_sign
  • noria — 用于 Web 应用程序后端的动态变化、部分状态的数据流
  • Lucid — High performance and distributed KV store accessible through a HTTP API.
  • ParityDB — 快速可靠的数据库,针对读操作进行了优化
  • PumpkinDB — 事件溯源数据库引擎
  • seppo0010/rsedis — Rust 中的 Redis 重新实现
  • Skytable — 多模型 NoSQL 数据库
  • tikv — Rust 中的分布式 KV 数据库
  • sled —(测试版)现代嵌入式数据库
  • TerminusDB - 开源图形数据库和文档存储

模拟器

游戏

图形处理

工业自动化

可观察性工具

  • timberio/vector — 高性能、日志、指标和事件路由器.
  • Mnwa/gtsa — 将 gelf 消息(Graylog 的消息)代理到 Sentry 的简单解决方案
  • OpenTelemetry — OpenTelemetry 提供一组 API、库、代理和收集器服务,以从您的应用程序中捕获分布式跟踪和指标. 您可以使用 Prometheus、Jaeger 和其他可观察性工具分析它们.

操作系统

生产能力

  • espanso — 一个用 Rust 编写的跨平台文本扩展器 eureka — 无需离开终端即可输入和存储您的想法的 CLI 工具
  • pier-cli/pier — 用于管理(添加、搜索元数据等)所有单行程序、脚本、工具和 CLI 的**存储库
  • subilo - 持续部署代理

安全工具

系统工具

文字编辑器

  • amp — 受 Vi/Vim 的启发.
  • gchp/iota — 一个简单的文本编辑器
  • ilai-deutel/kibi — 具有语法高亮、增量搜索等功能的小型 (≤1024 LOC) 文本编辑器.
  • vamolessa/pepper [pepper] — 一个自以为是的模式编辑器,可简化从终端进行的代码编辑
  • mathall/rim — 用 Rust 编写的类似 Vim 的文本编辑器
  • ox — 在终端中运行的独立 Rust 文本编辑器!
  • Remacs — 社区驱动的 Emacs 到 Rust 的移植.
  • xi-editor — 一个现代编辑器,后端是用 Rust 编写的.
  • xray — 实验性的下一代基于电子的文本编辑器.

文本处理

  • cpc - 解析和计算数学字符串,支持单位和单位转换,从 “1+2” 到“1% 的回合(1 光年 / 14!s 到公里 / 小时)”.
  • grex — 用于从用户提供的测试用例生成正则表达式的命令行工具和库
  • dmerejkowsky/ruplacer — 在源文件中查找和替换文本
  • ripgrep — 结合了 Silver Searcher 的可用性和 grep 的原始速度
  • phiresky/ripgrep-all — ripgrep,还可以搜索 PDF、电子书、Office 文档、zip、tar.gz 等.
  • replicadse/complate — 一种终端内文本模板工具,用于标准化消息(如 GIT 提交).
  • sd — 直观的查找和替换 CLI
  • lavifb/todo_r — 用一个命令查找所有 TODO 笔记!
  • whitfin/runiq — 从未排序的输入中过滤重复行的有效方法.
  • whitfin/bytelines — 将输入行读取为字节片以提高效率.
  • vishaltelangre/ff — 按名称查找文件 (ff)!
  • xsv — 一个快速的 CSV 命令行工具(切片、索引、选择、搜索、采样等)
  • Lisprez/so_stupid_search — 一个简单快速的人类字符串搜索工具

图像处理

  • Imager — 自动图像优化.

实用工具

  • aleshaleksey/AZDice — 桌面家庭酿酒商的骰子成功分发生成器.
  • yaa110/cb — 管理剪贴板的命令行界面
  • brycx/checkpwn — 一个 Have I Being Pwned (HIBP) 命令行实用工具,可让您轻松检查被盗用的帐户和密码.
  • vamolessa/copycat [copycat] — 一个简单的剪贴板 cli 界面,适用于具有文本和 bmp 支持的窗口
  • evansmurithi/cloak — 命令行 OTP(一次性密码)身份验证器应用程序.
  • replydev/cotp - 与外部备份兼容的值得信赖的加密一次性密码验证器应用程序.
  • rustdesk/rustdesk - 远程桌面应用程序.
  • arthrp/consoletimer — 终端的简单计时器.
  • tversteeg/emplace — 在多台机器上同步已安装的包
  • unrelentingtech/freepass — 高级用户的免费密码管理器.
  • yoannfleurydev/gitweb — 在浏览器中打开当前远程存储库.
  • mme — 命令行工具来记住您有时忘记的命令.
  • raftario/licensor — 将许可证写入标准输出
  • arthrp/quick-skeleton — 项目脚手架工具,类似于 Yeoman 和 Slush.
  • repoch — 将纪元转换为日期时间,将日期时间转换为纪元
  • whitfin/s3-concat — 使用灵活模式远程连接 Amazon S3 文件的命令行工具.
  • whitfin/s3-meta — 用于收集有关 Amazon S3 存储桶的元数据的命令行工具.
  • whitfin/s3-utils — 一个包含基于 Amazon S3 的实用程序的小工具,可提供额外的便利 API.
  • gorros/s3-edit-rs — 直接在 Amazon S3 上编辑文件的命令行工具.
  • fcsonline/tmux-thumbs — 用 Rust 编写的 tmux-finger 的闪电般快速版本,像 vimium/vimperator 一样复制 / 粘贴 tmux.
  • amar-laksh/workstation — 一个命令行工具,可帮助您管理工作站,让您远离屏幕、在您不在时锁定屏幕以及使用 OPENCV 进行其他操作!
  • guoxbin/dtool — 一个有用的命令行工具集合,用于协助开发,包括转换、编解码器、散列、加密等.
  • nomino — 开发人员批量重命名实用程序
  • barberousse — AWS Secrets Manager 编辑器
  • vamolessa/verco [verco] — 一个简单的 Git/Hg tui 客户端,专注于键盘快捷键

视频

  • Phate6660/rsmpv — MPV 控制器,需要在 MPV 中启用 IPC.
  • tgotwig/vidmerger — ffmpeg 的包装器,可简化多个视频的合并
  • xiph/rav1e — 最快、最安全的 AV1 编码器.
  • yuvadm/slingr — 一个简单的 CLI,用于通过本地网络将媒体文件流式传输到 UPnP 媒体渲染器
  • yuvadm/streamlib — 从命令行播放您最喜欢的实时视频和音频流

虚拟化技术

Web

Web Servers

  • mufeedvh/binserve — 极快的静态 Web 服务器,在单个二进制文件中具有路由、模板和安全性,您可以使用零代码进行设置
  • thecoshman/http — 请托管这些东西 — 一个基本的 http 服务器,用于快速简单地托管文件夹
  • svenstaro/miniserve — 一个小型的、自包含的跨平台 CLI 工具,允许您只获取二进制文件并通过 HTTP 提供一些文件
  • TheWaWaR/simple-http-server — 简单的静态 http 服务器
  • wyhaya/see — 静态 HTTP 文件服务器
  • ronanyeah/rust-hasura — Rust GraphQL 服务器如何用作远程模式的演示 Hasura

开发工具

  • clippy
  • clog-tool/clog-cli — 从 git 元数据生成变更日志 (conventional changelog)
  • dan-t/rusty-tags — 为货物项目及其所有依赖项创建 ctags/etags
  • datanymizer/datanymizer - 强大的数据库匿名器,具有灵活的规则
  • delta — git 和 diff 输出的语法高亮器
  • dotenv-linter — 用于 .env 文件的 Linterfrewsxcv/crate-deps — 为 crates.io 上托管的 crate 生成依赖图的图像
  • geiger — 一个程序,列出与在 Rust crate 及其所有依赖项中使用不安全 Rust 代码相关的统计信息m/cargo-geiger/cargo-geiger/_build/latest?definitionId=1&branchName=master)
  • git-journal — Git 提交消息和变更日志生成框架
  • gstats — 用于打印当前目录下所有 git 存储库的开发人员方便摘要的命令行工具
  • rust-lang/rustfix — 自动应用 rustc 提出的建议
  • just — 用于特定项目任务的便捷命令运行器
  • mask — 由一个简单的 Markdown 文件定义的 CLI 任务运行器
  • Module Linker —在 GitHub 的 moduseextern crate 语句中添加 <a> 链接到引用的扩展.
  • ptags — git 存储库的并行通用 ctags 包装器
  • Racer — Rust 的代码完成
  • rustfmt — Rust 代码格式化程序
  • Rustup — Rust 工具链安装程序
  • Rust Language Server — 在后台运行的服务器,为 IDE、编辑器和其他工具提供有关 Rust 程序的信息
  • Rust Regex Playground — 评估 Rust 正则表达式的 Web 工具
  • Rust Search Extension — 一个方便的浏览器扩展,用于在地址栏(多功能框)中搜索 crate 和文档.
  • artifact — 为开发人员制作的设计文档工具
  • semantic-rs — 自动 crate 发布
  • fw — 工作空间生产力助推器
  • tinyrick 一个基本的任务依赖工具,强调 Rust 功能而不是原始 shell 命令.
  • scriptisto 一种与语言无关的 “shebang 解释器”,它使您能够用编译语言编写一个文件脚本.

系统编译

  • Cargo — Rust 包管理器
  • cargo-benchcmp — 比较 Rust 微基准的实用程序
  • cargo-bitbake — 一个货物扩展,可以利用 meta-rust 中的类生成 BitBake 配方
  • cargo-cache - 检查 / 管理 / 清理你的货物缓存(~/.cargo//${CARGO_HOME}),打印尺寸等
  • cargo-checkcargo rustc -- -Zno-trans 的包装器,如果您只需要正确性检查,它可以帮助运行更快的编译
  • cargo-count — 列出有关货物项目的源代码计数和详细信息,包括不安全统计数据
  • cargo-deb — 生成二进制 Debian 软件包
  • cargo-deps — 构建 Rust 项目的依赖图
  • cargo-do — 连续运行多个货物命令
  • cargo-ebuild — 可以使用树内 eclasses 生成 ebuild 的货物扩展
  • cargo-edit — 允许您通过从命令行读取 / 写入 Cargo.toml 文件来添加和列出依赖项
  • cargo-generate 通过利用预先存在的 git 存储库作为模板来生成 Rust 项目.
  • cargo-get - Cargo 插件可以轻松地从 Cargo.toml 文件中查询信息
  • cargo-graph — 更新了具有附加功能的 cargo-dot 分支. 未维护,请参阅cargo-deps
  • cargo-info — 从命令行查询 crates.io 以获取 crates 详细信息
  • cargo-license — 一个货物子命令,用于快速查看所有依赖项的许可证.
  • cargo-make — Rust 任务运行器和构建工具.
  • cargo-modules — 一个货物插件,用于显示板条箱模块的树状概览.
  • cargo-multi — 在多个板条箱上运行指定的货物命令
  • cargo-outdated — 在新版本的 Rust 依赖项可用或过时时显示
  • cargo-release — 用于发布 git 管理的货物项目、构建、标记、发布、文档和推送的工具
  • cargo-script — 让人们快速、轻松地运行 Rust “脚本”,它可以利用 Cargo 的包生态系统
  • cargo-testify — 监视文件更改、运行测试并通过友好的操作系统通知通知结果
  • cargo-tree – Cargo 子命令,以树状格式可视化 crate 的依赖关系图
  • cargo-update — 用于检查和应用更新已安装的可执行文件的货物子命令
  • cargo-watch — 货物在源更改时编译项目的实用程序
  • liuchong/cargo-x ——一个非常简单的第三方 cargo 子命令来执行自定义命令
  • dtolnay/cargo-expand — 扩展源代码中的宏
  • Devolutions/CMakeRust — 用于将 Rust 库集成到 CMake 项目中
  • SiegeLord/RustCMake — 一个示例项目,展示了 CMake 与 Rust 的使用
  • icepuma/rust-action ——Rust github 动作
  • peaceiris/actions-mdbook — mdBook 的 GitHub 操作
  • GitHub 网络钩子
  • snare — GitHub webhooks 运行器守护进程
  • 网络包
  • mxseev/rust-loader — Webpack Rust 加载器 (wasm)

调试

部署

嵌入式

FFI

也可以看看 Foreign Function Interface, The Rust FFI Omnibus (使用其他语言用 Rust 编写的代码的示例集合)和 FFI examples written in Rust.

IDEs

也可以看看 Are we (I)DE yet?Rust Tools.

图像识别

分析

Services

  • deps.rs — 检测过时或不安全的依赖项
  • docs.rs — 自动生成 crate 文档

静态分析

测试

  • laboratory — 一个简单、富有表现力的 Rust 单元测试框架
  • cucumber-rust — Rust 的 Cucumber 测试框架的实现.
  • demonstrate — 声明式测试框架
  • httpmock — HTTP 模拟
  • mockiato — 一个严格但友好的 Rust 2018 模拟库
  • mutagen — 一个源级变异测试框架(仅限每晚)
  • AlKass/polish — 迷你测试 / 测试驱动框架
  • proptest — 受启发的属性测试框架 Hypothesis Python 框架
  • quickcheck — 一个 Rust 实现 QuickCheck
  • mockito — HTTP 模拟
  • speculate — 一个 RSpec 启发了 Rust 的最小测试框架
  • rstest — Rust 的基于夹具的测试框架
  • ruspec — 像 Rspec 测试框架一样用 Rust 编写
  • rust-fuzz/afl.rs — 一个 Rust 模糊器,使用 AFL
  • tarpaulin — 为 Rust 设计的代码覆盖率工具
  • trust — Travis CI 和 AppVeyor 模板,用于在 5 种架构上测试您的 Rust crate 并发布其适用于 Linux、macOS 和 Windows 的二进制版本
  • fake-rs — 生成假数据的库
  • goldenfile - 一个为 Goldenfile 测试提供简单 API 的库.
  • cargo-dinghy - 简化在智能手机和其他小型处理器设备上运行库测试和工作台的货物扩展.

翻译器

收集系统信息

  • Phate6660/nixinfo [crate] — 一个用于收集系统信息(如 CPU、发行版、环境、内核等)的 lib crate.

🐂 大牛语录

Matthieum:

“Rust 使编写正确且可读的代码变得更容易,同时获得两者并非巧合。

所有权/借用机制(对生命周期、别名和可变性的严格控制)在生成的软件的数据流中强制执行某种简单性,您可以在其他编程语言中获得这种简单性,但通常不会,因为该语言更宽松你得到了一个更复杂的流程。

你是否曾经在 Java 中调试过 ConcurrentModificationException?当您修改正在迭代的容器时会发生这种情况。当您有一系列回调/观察者时,意外地有导致此异常的循环引用非常容易。在 Rust 中,要解决这种情况,你必须使用 RefCell 或等价物,它应该让您停下来。”



零领工作


实时提供,每周发布北京,上海,广州,深圳,杭州,南京,合肥,武汉,长沙,重庆,成都,西安,厦门的c/c++,golang方向的招聘岗位信息。 包含校招,社招,实习岗位, 面经,八股,简历

零领工作