ubuntu安装 rust nightly_有了这个,不用安装软件也可以学 Rust

041f37bf-0314-eb11-8da9-e4434bdf6706.png

我们将一起学习如何使用 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 Playground 和 REPL.it 这样的在线 Rust IDE 是一些简单的工具,它们没有充分利用第三方编译器目标和库的 Rust 生态系统。

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

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

现在有了世界级的CI/CD,Github Actions 可以轻松地自动化所有软件工作流。 我们可以在 GitHub 上构建、测试和部署代码。 按照我们希望的方式进行代码审查、branch 管理和 issue 分类工作。

本文中用到的 Hello World 示例源代码和工作流 action 可以在这个 GitHub repo 中找到

https://github.com/second-state/learn-rust-with-github-actions

Hello world

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

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

Src / main.rs 文件

081f37bf-0314-eb11-8da9-e4434bdf6706.png

接下来,返回到 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 文件,或者从现成的模板中选择一个。

0b1f37bf-0314-eb11-8da9-e4434bdf6706.png

Github Actions 中的Rust工作流模板

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

0d1f37bf-0314-eb11-8da9-e4434bdf6706.png

默认的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 run。cargo run 运行已编译的二进制程序。 我们更新的 rust.yml 文件如下:

name: Ruston:push:branches: [ master ]pull_request:branches: [ master ]jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: Buildrun: cargo build —verbose- name: Runrun: cargo run

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

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

101f37bf-0314-eb11-8da9-e4434bdf6706.png

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

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

141f37bf-0314-eb11-8da9-e4434bdf6706.png

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结束,这正是我们在这里所需要的。

161f37bf-0314-eb11-8da9-e4434bdf6706.png

这次,我们需要的是默认的Rust工作流操作

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

181f37bf-0314-eb11-8da9-e4434bdf6706.png

Github Actions构建并测试 Rust 程序

下一步是什么

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值