2 个版本

0.1.1 2021年11月23日
0.1.0 2021年6月10日

#516编程语言

MIT/Apache

160KB
1.5K SLoC

Rust基于流的编程

简介

多年来,大多数 系统 代码都是用C或C++编写的。这些工具在大复杂系统的开发中发挥了相当好的作用。另一方面,C和C++可能在内存问题和悬挂指针方面存在重大问题。因此,Mozilla Research的好人们设计并构建了Rust编程语言。Rust旨在成为用于高度并发和高度安全系统开发的语言。它还旨在支持“大型编程”,即创建和维护边界以保持大型系统的完整性。这些设计目标导致了Rust在安全性、内存布局控制和并发性方面的重视。

Rust内存安全性

Rust设计为内存安全。这意味着它不允许在安全代码中存在空指针、悬挂指针或数据竞争。Rust不使用自动垃圾回收系统。这意味着Rust代码的性能与C和C++相当。

Rust中的数据所有权

Rust有一个所有权系统,其中所有值都有一个唯一的所有者,值的范围与所有者的范围相同。值可以通过不可变引用(&T)、可变引用(&mut T)或值(T)传递。可以有多个不可变引用,或者只有一个可变引用,它提供了一个隐式的读者-写者锁。Rust编译器使用所谓的“借用检查器”在编译时强制执行这些规则。

Rust类型和多态

Rust不支持像C++那样的继承。它使用一个名为traits的系统,该系统受到Haskell语言的启发。这个特性系统允许实现自定多态。这意味着Rust中的结构体可以是一个数据类型,可以选择遵守一个特性,这使得该结构体可以成为该特性的子类。这意味着Rust类型可以继承行为,但不能继承字段。Rust中没有“多重继承”,但是一个结构体可以选择遵守多个特性。

基于流的编程

流程式编程(FBP)是在20世纪70年代初由J. Paul Morrison发明的。它将应用程序视为一个由异步进程组成的网络,这些进程通过结构化数据流进行通信,而不是单个的、顺序的过程。这意味着FBP专注于应用程序数据和对其进行的转换,以生成所需的输出。通常,该网络作为连接列表定义在进程外部。您可以在以下链接了解更多关于FBP的信息:https://en.wikipedia.org/wiki/Flow-based_programming

目前缺少的内容

目前只有FBP系统的基本框架。还有许多部分需要编写。

待办:完善这一区域

管理

以下是一个简短的摘要,可以帮助您开始使用Rust和此代码库。此代码已在Ubuntu 20.04、Windows 10的PowerShell、Windows 10的Ubuntu 20.04 WSL以及Mac上构建和测试。第一步是在您的平台上安装Rust。

在Ubuntu 20.04或Windows 10 Ubuntu 20.04 WSL2上安装Rust

以下说明适用于Ubuntu 20.04

https://www.osradar.com/install-rust-programming-language-ubuntu-debian/

为PowerShell在Windows 10上安装Rust

以下说明适用于Windows 10。我使用PowerShell,并且该配置已经过测试。它应该也适用于CMD,但效果可能会有所不同。

https://www.shadercat.com/setting-up-a-rust-development-environment-on-windows-10/#:~:text=%20Install%20Rust%20for%20Windows%20%201%20First%2C,or%20stable%2C%20and%20building%20against%20the...%20More%20

在Mac OSX上安装Rust

对于Mac用户,您需要安装Homebrew。可以使用以下说明在Mac上安装Homebrew

https://brew.sh.cn/

安装Homebrew后,按照以下说明安装Rust

https://sourabhbajaj.com/mac-setup/Rust/

构建源代码

Rust有一个名为cargo的包管理器。这是我们构建所有操作系统上源代码的方式。一旦在您的操作系统上安装了Rust,打开一个终端窗口,并将目录更改到此git签入点。一旦进入,可以使用以下命令

cargo clean

这将清除代码,以便进行完整构建。

cargo build

这将构建源代码并创建库(Rust术语中的crate)。

cargo test

这将运行crate的单元测试。**注意**:当运行cargo test时,您可能已放入源代码中的任何println!都不会输出到终端。这是因为cargo test捕获了输出。要调试或**查看**任何println!语句,必须以以下方式运行cargo test:cargo test -- --nocapture

cargo doc

这将为此crate构建标准的Rust文档。

Rust资源

网络上有许多不同的Rust资源。我个人发现《使用大量链表学习Rust》非常有用:http://cglab.ca/~abeinges/blah/too-many-lists/book/README.html?ref=hackr.io。还有Rust教程:https://aml3.github.io/RustTutorial/html/toc.html?ref=hackr.io。对于资源分组,以下是一些链接:https://analyticsindiamag.com/top-10-free-resources-to-learn-rust-programming-language/

依赖关系

~5–15MB
~172K SLoC