wenchao1024 / Understanding_in_Rust

Rust工程师枕边资料,经典博客,大牛文章,开源框架,国外项目,论文,视频,书籍,作者口述一览表

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

🏄💨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 - 持续部署代理

安全工具

✈ 杂货铺

🐂 大牛一览表

About

Rust工程师枕边资料,经典博客,大牛文章,开源框架,国外项目,论文,视频,书籍,作者口述一览表