跳至主要內容

HCR 中的 Rust

從伺服器端重播到嵌入式機器人韌體,皆採用 Rust

HCR 在策略、重播、協定狀態及經驗證的硬體控制交會處使用 Rust。瀏覽器介面仍採用 React 與 Blockly;服務及嵌入式閘道則由 Rust 執行。

技術架構

兩個 Rust 執行環境,兩種部署限制

評分服務使用可增量擴充的 hcr.v1 契約與權威重播。目前 no_std ESP8266 閘道執行有界 HTTP/JSON 伺服 API;MQTT 與 CBOR 仍是規劃中的裝置路徑。

Rust · MQTT over WebSocket · HTTP binding

Service

在伺服器端重播程式、執行適性題庫,並負責回合截止時間與排名。

hcr-backend

hcr.v1 · JSON and CBOR

協定

每則訊息都使用一個封套,並透過 ULID 關聯。次要版本只允許新增欄位;接收端會忽略無法辨識的內容,而不會因此失敗。

hcr-backend/schema

Rust (no_std) · ESP8266 · Arduino C++ as a hardware library

硬體

實體五伺服機械臂由 Rust 管理啟動策略、路由、HTTP/JSON 與伺服狀態;C++ 僅限於位元組型 C ABI 之後。閘道尚未實作 MQTT。

hcr-fw

開源

HCR 背後的 Hotaru Rust 生態系

HCR 在 crates.io 發布後端服務 crate,並使用 Hotaru 建構服務與嵌入式協定層。可瀏覽該 crate、框架官網、核心程式庫,以及獨立維護的 MQTT 實作。

設計

Rust 負責策略;C++ 只作為硬體函式庫

相依關係只有一個方向。僅有一個 crate 宣告外部硬體函式,邊界傳遞的是位元組,而不是 Arduino 字串、C++ 物件、路由、JSON 或應用程式狀態。

Rust 負責

  • 啟動策略與協作式執行器
  • Hotaru 路由與通訊協定
  • HTTP 解析與回應
  • 伺服驗證與狀態

C++ 負責

  • 時鐘、中斷遮罩、看門狗、重新啟動、堆積、亂數、序列埠
  • Wi-Fi 存取點與工作站模式、原始 TCP 與 UDP 控制代碼
  • 強制入口 DNS 與 SPIFFS 控制代碼
  • GPIO、PWM、伺服脈衝寫入、原始 OTA 寫入

Rust

Rust 對 HCR 的意義

HCR 在需要確定性重播、明確協定型別、受控並行及精簡嵌入式邊界的部分使用 Rust。這是具體的架構選擇,並不表示 HCR 的每個部分都由 Rust 編寫。

瀏覽器介面以 React 與 TypeScript 建構。HCR 是獨立專案,與 Rust Project 或 Rust Foundation 無關聯,亦未獲其背書。

硬體