有了这个,不用安装软件也可以学Rust(非IDE)

我们将一起学习如何使用 GitHub Actions 在 web 浏览器中学习 Rust。 我们将在一个网页中编写、构建、测试、运行和发布所有内容。 重要的是不需要安装软件!

Rust 是当今最热门的编程语言之一。 极客大神们都喜欢 Rust。 Rust 连续4年在 Stackoverflow 上评选为最受欢迎的编程语言。

Rust 最独特和最受欢迎的特性之一是其万能的编译器,可以帮助您在程序运行之前确保正确性和安全性。 因此,Rust 开发人员可以编写高性能但安全的程序。 Rust 消除了某些类型的编程 bug,尤其是那些难以纠正的运行时 bug。

如果你还没有尝试过用 Rust 编写程序,那就来试试吧! Rust 就好像魔法一样。 我相信 Rust 会成为下一个 Java 或者 Ruby —— 一种未来每个人都需学习的编程语言。

然而,学习 Rust 通常需要您在计算机上安装一系列命令行工具。 Rust 编译器速度很慢,因为整个 Rust 范例是用来深入分析源代码,并在编译时发现 bug 的,而不是在运行时崩溃的时候才发现 bug。

Rust PlaygroundREPL.it 这样的在线 Rust IDE 是一些简单的工具,它们没有充分利用第三方编译器目标和库的 Rust 生态系统。

所以你可能想知道,是否可以在不安装软件包的情况下,学习Rust?

通过 GitHub Actions,我们可以直接在你的浏览器中学习和探索 Rust 代码。

现在有了世界级的CI/CD,Github Actions 可以轻松地自动化所有软件工作流。 我们可以在 GitHub 上构建、测试和部署代码。 按照我们希望的方式进行代码审查、branch 管理和 issue 分类工作。本文中用到的 Hello World 示例源代码和工作流 action 可以在这个 GitHub repo 中找到。

Hello world

首先,创建一个新的 GitHub 仓库o,并添加一个 Rust source 文件。 让我们添加一个 src/main.rs 文件,内容如下:

fn main() {
println!("Hello, world!");
}

Src / main.rs 文件

接下来,返回到 GitHub 仓库的 root /目录,并添加 Cargo.toml 文件。 这个文件描述了 Rust cargo 系统应该如何构建和打包我们的项目。

[package]
name = "hello"
version = "0.1.0"
authors = ["ubuntu"]
edition = "2018"

[dependencies]

(存储库根目录下的 Cargo.toml 文件)

现在我们有一个完整的Rust项目,来建立和运行它吧。

Github actions

在 GitHub Actions 选项卡上,我们可以添加与这个项目相关的工作流。 这些是 Github 在发生特定事件时自动执行的 actions,比如代码推送或提交。 在本文的例子中,我们希望 GitHub 自动构建并运行 main.rs,并显示结果。

属性下的 yml 文件中定义了工作流 actions 及其事件触发器 .Github / workflows 目录。 我们可以自己编写 yml 文件,或者从现成的模板中选择一个。


(Github Actions 中的Rust工作流模板)

这里我们选择 Rust 模板,GitHub 允许我们在将 Rust.yml 文件检入到存储库之前编辑它。

(默认的Rust操作模板。可以按照自己的喜好进行编辑。)

让我们在这里花一分钟来解释 GitHub Actions 是如何工作的,默认的 rust.yml 文件显示:

  • 每当用户将代码压入或接受 PR 到存储库中时,就会触发 rust.yml 工作流 action。
  • 这个工作流程将创建一个运行最新的 Ubuntu 操作系统的虚拟机。 在这个 Ubuntu 系统上,它将执行以下步骤。
  • 它将从 master 分支检出代码。
  • 它将运行 cargo build -- verbose 命令来编译和构建 Rust 代码。
  • 它将运行cargo test -- verbose 命令来执行测试用例。
  • 上述两个命令在 Ubuntu 系统上的所有标准输出和控制台输出都将被 GitHub Actions 捕获并显示在 web 上。

编辑 rust.yml 中的最后一行以执行 cargo runcargo run 运行已编译的二进制程序。 我们更新的 rust.yml 文件如下:

name: Rust

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Build
run: cargo build —verbose
- name: Run
run: cargo run

(我们将默认的 Rust 模板的最后一行更改为 cargo run)

现在,无论何时将代码推送到这个存储库,都会执行 rust.yml 中的操作。 您可以在 Actions 选项卡下看到结果。


(每次推送到 GitHub repo 都会触发Actions来运行)

单击结果,然后单击左侧的 build 选项卡以查看详细信息。 构建和运行部分提供了最相关的细节。 Run 部分显示了 Hello World 的成功打印!


(Run action 显示 Hello World!)

接下来,可以在 Cargo.toml中添加第三方依赖项,并在 main.rs中构建复杂的 Rust 应用程序。 只要有人输入代码,我们就能看到结果。

测试驱动开发(TDD)

当然,实际上很少有开发人员运行程序将文本打印到控制台。 上面的 cargo run 只是一个演示。 实际上,多数开发人员为这些函数编写函数和测试用例。 编译和构建之后最频繁的任务是运行测试用例。 让我们看看GitHub Action 是如何做到的。

创建一个新的 GitHub 存储库,然后在下面添加一个 src/lib.rs 文件。 正如我们所看到的,它定义了一个 Rust 函数和一些测试用例。 它可以作为一个 Rust 库包来构建和发布。

pub fn say(s: &str) -> String {
let r = String::from("hello ");
return r + s;
}

#[cfg(test)]
mod tests {
use super::*;

#[test]
fn say_hello() {
let result = say("ssvm");
assert!(result.contains("hello ssvm"));
}
}

(Src /lib.rs 文件)

然后,返回到 GitHub 存储库的 root /目录,并添加以下 Cargo.toml 文件。

[package]
name = "hello"
version = "0.1.0"
authors = ["ubuntu"]
edition = "2018"

[lib]
name = "hello_lib"
path = "src/lib.rs"
crate-type =["cdylib"]

[dependencies]

单击 Actions 并添加默认的Rust工作流。 正如上文所提到的,默认的 Rust 工作流以 cargo test结束,这正是我们在这里所需要的。


(我们需要的是默认的Rust工作流操作)

每次将新代码推入此 repo 时,工作流都会运行。 您可以单击打开一个成功的构建,并查看构建和测试action的输出。


(Github Actions构建并测试 Rust 程序)

###下一步是什么

现在你可以用 Rust 代码进行实验,并且可以免费使用 GitHub 构建、测试和运行,并且可以用于完整的控制台输出,而且这都是在你的浏览器中进行!

资源

  • 学习用 Rust 编程

  • 了解更多有关 GitHub Actions 的信息

  • 当然,在服务器上运行 Rust 程序的最佳方式是在 WebAssembly 虚拟机中

  • 使用 BUIDL IDE 在公链上部署去中心化的网络应用程序

关于作者

Michael Yuan 博士曾编写5本关于软件工程的书。 他的最新著作《Building Blockchain Apps》于2019年12月由 Addison-Wesley 出版。 使用 BUIDL IDE (附带书中的教程) ,开发者可以在5分钟内开发去中心化 web 应用程序。

Yuan 博士是 Second State 的 CEO,该公司专注于将 WebAssembly 和 Rust 技术引入云计算、区块链和人工智能应用。

在此之前,袁博士是 Red Hat、 JBoss 和 Mozilla 的长期开源贡献者。

除了软件专家之外,袁博士还是国立卫生研究院研究中心的研究员,在癌症和公共卫生研究领域获得过多项研究奖项。 他拥有德克萨斯州大学奥斯汀分校的天体物理学博士学位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章