Rust 1.40.0 了
新增了一些新特性
- 不詳細的
#[non_exhaustive] structs, enums, and variants
這表示當前的屬性有缺少,要增加屬性欄位,沒增加是會出現錯誤的。
範例看到 beta 依賴 alhpa
// alpha/lib.rs:
#[non_exhaustive]
struct Foo {
pub a: bool,
}
enum Bar {
#[non_exhaustive]
Variant { b: u8 }
}
fn make_foo() -> Foo { ... }
fn make_bar() -> Bar { ... }
// beta/lib.rs:
let x = Foo { a: true }; //~ ERROR
let Foo { a } = make_foo(); //~ ERROR
// `beta` will still compile when more fields are added.
let Foo { a, .. } = make_foo(); //~ OK
let x = Bar::Variant { b: 42 }; //~ ERROR
let Bar::Variant { b } = make_bar(); //~ ERROR
let Bar::Variant { b, .. } = make_bar(); //~ OK
// -- `beta` will still compile...
- macro 的改善
現在可以這樣寫 expand_to_type 是 procedural macro
type Foo = expand_to_type!(bar);
extern 裡面也可以有 macro
macro_rules! make_item { ($name:ident) => { fn $name(); } }
extern {
make_item!(alpha);
make_item!(beta);
}
-
Rust 2015的借用檢查警告會變成錯誤
-
更多 const fn 函數進入標準庫
-
還有其它一些函數跟macro也穩定了
time v0.2
至少要使用 rust 1.40.0
因為使用了 non_exhaustive 特性
與標準庫具有完全的相容性。每種類型都可以執行與標準庫對應的相同算法,反之亦然。類型可以在標準庫之間自由轉換。
Signal 正在使用 rust
Signal是一個通訊軟體,類似Line, WhatApps, Telegram, QQ
本文大部份是講他們遇到的分散式儲存問題,最後他們使用Raft同步。
Signal選擇將Rust用於我們的Raft實現,他們選擇的重點是因為正確性,而不是性能,因此即使有機會加快某些操作的速度,我們也不會偏離Raft規範。
mitosis: thread::spawn
這個庫提供了 mitosis::spawn 他很像 thread::spawn
但實際上是產生了一個新的 process
但是用起來就像 thread::spawn 一樣簡單
Serverless Rust 使用 WASM 加 Cloudflare
作者原本使用 actix-web
但因為好奇心接觸了 Cloudflare Workers
Cloudflare Workers是支持Rust和WASM的無服務器平台。
使用Cloudflare Workers的主要優勢:
-
地理位置分佈的託管設置(包括Kubernetes集群)是在單個地理位置上設置的。對於並行應用程序,讓代碼在Cloudflare的所有數據中心中一起運行非常棒。
-
比起一般的設置時間成本,Cloudflare Workers可以快速的讓我訪問Kubernetes集群。 但是對於沒有預先在服務器或群集部署服務的用戶而言,建立新的安全,高可用性部署環境的時間以及運行這些計算機的成本可能會很高。 作者目前使用Cloudflare上託管此服務,還沒有到花到錢的流量。
-
易於測試/部署。Cloudflare團隊在Wrangler工具方面做得很好。 部署更新是對 wrangler publish 來說很簡單。 我可以使用wrangler preview --watch進行測試。 而且發布速度很快。
主要缺點:
-
WASM庫無法完美運行,因為大多數在WASM的庫都針對瀏覽器。例如,在Cloudflare Worker中,沒有視窗。要訪問程式,會需要一個ServiceWorkerGlobalScope。
-
開發週期很慢,儘管wrangler preview棒極了,但仍然需要很多時間才能看到更改。每次更改代碼都需要重新編譯Rust代碼,打包並將其發送到Cloudflare以及刷新頁面。特別是由於我使用的是經過編譯時檢查的HTML模板,因此速度非常慢。
-
密鑰與Kubernetes不同,Cloudflare Workers中沒有內置的密鑰管理。 Cloudflare小組的某人建議我可以將其密鑰/值存儲成檔案。我選擇了一個傻瓜方式,將機密(加密密鑰和Recaptcha機密密鑰)直接編譯為可執行文件。
-
調試困難 異步代碼,恐慌以及與JavaScript的橋樑的結合導致錯誤消息被完全刪除,這使得調試非常困難。
那到底要怎麼使用 Cloudflare Workers 與 rust 結合呢?請看原始文章。
採訪Zola的創建者(前身為Gutenberg),這是一個用Rust開發的靜態網站生成器
這是一個英文音頻節目
From 日报小组 @Damody
日报订阅地址:
独立日报订阅地址:
社区学习交流平台订阅:
评论区
写评论还没有评论