< 返回版块

挺肥 发表于 2020-03-05 01:20

Tags:rust日报;

嵌入式开发中的 async/await

这篇博客中讨论了为什么"async/await"对于嵌入式开发来说是比较重要的一个功能. 文章从一下几个角度来分析:

  • 从阻塞到非阻塞
  • 多任务处理
  • 线程
  • 数据共享
  • ...

详情:https://ferrous-systems.com/blog/async-on-embedded/

几个小技巧让你的 Rust 代码性能

不用改动代码,只通过几个技巧就能提高你的 Rust 项目运行速度,比如在 `Cargo.tom` 文件中 [profile.release] 下根据情况更改一些字段或许就可以提升你的项目性能:

  • lto = "fat"
  • codegen-units = 1
  • target-cpu = "native"
  • ...

详细介绍:https://deterministic.space/high-performance-rust.html

Firecracker: serverless 应用的轻量级虚拟化

详情: https://blog.acolyer.org/2020/03/02/firecracker/

Rust blog:近期以及未来的模式匹配改进

Rust 官方博客介绍了即将了即将应用于stable Rust 的模式匹配新特性

Subslice 模式匹配,[head, tail @ ..]

.. 意味着可变间隔,例如

fn recover_attrs_no_item(&mut self, attrs: &[Attribute]) -> PResult<'a, ()> {
    let (start, end) = match attrs {
        [] => return Ok(()),
        [x0] => (x0, x0),
        [x0, .., xn] => (x0, xn),
    };
    let msg = if end.is_doc_comment() {
        "expected item after doc comment"
    } else {
        "expected item after attributes"
    };
    let mut err = self.struct_span_err(end.span, msg);
    if end.is_doc_comment() {
        err.span_label(end.span, "this doc comment doesn't document anything");
    }
    if let [.., penultimate, _] = attrs {
        err.span_label(start.span.to(penultimate.span), "other attributes here");
    }
    Err(err)
}

其中 [x0, .., xn] 就表示匹配第一个以及最后一个元素而忽略中间的所有元素.

另一种用法是可以将subslice约束为一个变量,比如如果我们希望某个函数除了最后一个参数之外的参数不能为 ... 那么可以这样写:

match &*fn_decl.inputs {
    ... // other arms
    [ps @ .., _] => {
        for Param { ty, span, .. } in ps {
            if let TyKind::CVarArgs = ty.kind {
                self.err_handler().span_err(
                    *span,
                    "`...` must be the last argument of a C-variadic function",
                );
            }
        }
    }
}

这里的 ps @ .. 就表示忽略参数的最后的一个元素而将剩下的元素转化为 变量 ps

其他还有

  • Nested OR-patterns
  • Bindings after @
  • Combining by-move and by-ref bindings

详情: https://blog.rust-lang.org/inside-rust/2020/03/04/recent-future-pattern-matching-improvements.html


From 日报小组 @挺肥

日报订阅地址:

独立日报订阅地址:

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页