Rust Lang
Ngày | Mô tả |
---|---|
1/4/2024 | Khởi tạo bài viết |
17/8/2024 | Cập nhật bài viết, thêm thông tin về Rust-lang |
13/9/2024 | Update thêm documents về Rust |
Hạn chế
- Năm 2023 xảy ra nhiều dramma của Rust Found
- Rust là ngôn ngữ khó học, code khó.
- Cộng đồng DEV chưa quá đông như Golang. Top Programming Languages 2023
Lợi ích
- Rust là ngôn ngữ low level, được sử dụng cho nhiều mục đích khác nhau:
- Dùng để code nhúng.
- Dùng để code phía Server.
- Có thể dùng để code OS - như Rust for Linux
- Rust chú trọng vào sự an toàn - memory safety.
- Cộng đồng Rust vẫn đang phát triển. Dựa trên báo cáo thì số lượt tìm kiếm hướng dẫn lập trình Rust đã tăng hơn Golang
Rust Roadmap
Tài liệu về Rust
Cập nhật 17/8/2024
Youtube: Where is Rust being used?
Tổng hợp Rust is for Robotics
Doc: Offline-first Smart Energy Monitor with Rust, ESP32, and Thingsboard
Framework cho MQTT cho Rust: rumqtt
Framework NATS for Rust: nats.rs
- Có thể sử dụng NATS cho ThingsBoard.
- Sample code từ ChatGPT:
use nats::asynk::Connection;
use serde::{Deserialize, Serialize};
use serde_json::json;
use tokio::time::{sleep, Duration};
#[derive(Debug, Serialize, Deserialize)]
struct TelemetryData {
device_id: String,
temperature: f64,
humidity: f64,
timestamp: u64,
}
#[tokio::main]
async fn main() -> std::io::Result<()> {
// Connect to the NATS server
let nc: Connection = nats::asynk::connect("demo.nats.io").await?;
// Subscribe to a subject where ThingsBoard publishes telemetry data
let subscription = nc.subscribe("thingsboard.telemetry").await?;
// Process incoming messages
while let Some(msg) = subscription.next().await {
// Parse the telemetry data (assumed to be JSON)
let telemetry: TelemetryData = serde_json::from_slice(&msg.data).expect("Failed to parse telemetry data");
println!("Received telemetry from device {}: Temperature = {}, Humidity = {}, Timestamp = {}",
telemetry.device_id, telemetry.temperature, telemetry.humidity, telemetry.timestamp);
// Optionally, publish an acknowledgment or command back to ThingsBoard or another subject
let response_subject = format!("thingsboard.ack.{}", telemetry.device_id);
let ack_message = json!({
"device_id": telemetry.device_id,
"status": "acknowledged",
"timestamp": telemetry.timestamp
});
nc.publish(&response_subject, ack_message.to_string().as_bytes()).await?;
}
Ok(())
}
Cập nhật 13/9/2024
Bài viết: 35 Rust Learning Resources Every Beginner Should Know in 2022
- Trong bài viết này tổng hợp rất nhiều documents cho beginner để bắt đầu với Rust.
- Ở đây mình thấy có những trang rất hay, ví dụ:
Tour of Rust
Trang này có tiếng Việt và có thêm phần để run code.
A half-hour to learn Rust
A Gentle Introduction To Rust
Easy Rust
September 13, 2024 ∙