有了這個,不用安裝軟件也可以學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 的長期開源貢獻者。

除了軟件專家之外,袁博士還是國立衛生研究院研究中心的研究員,在癌症和公共衛生研究領域獲得過多項研究獎項。 他擁有德克薩斯州大學奧斯汀分校的天體物理學博士學位。

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