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);

本文介绍了Rust 1.40.0的新特性,包括#[non_exhaustive]和macro改进。同时展示了Signal如何使用Rust解决分布式存储问题。文章还探讨了使用Rust和WASM在Cloudflare Workers上实现Serverless的优势和挑战,如快速部署、地理分布托管,但也面临调试困难和库兼容性问题。
最低0.47元/天 解锁文章
86





