< 返回版块

gensmusic 发表于 2021-09-06 20:00

加快 Rust 的编译

众所周知,Rust代码编译起来很慢。但我有一种强烈的直觉,大多数Rust代码的编译速度比它本可以的要慢得多。

例如, Rust 的 rust-analyzer CI 在 GitHub 上操作需要8分钟。这是一个相当大和复杂的项目,有20万行自己的代码和100万行依赖。

跟随作者, 让我们进一步了解如何使编译时间保持在合理的范围内!

原文链接

async 的另外一个语法方案

作者对于 async的语法方案提出了完整的自己的解决方案, 非常有趣.

原文链接

Rust 插件

这是作者的第二篇关于 Rust插件的文章! 在这里,作者将尝试编写一些 PDK (Plugin Development Kit, 插件开发工具包) 可能是什么样子的简单代码,并对在编写过程中出现的问题做一些研究。

原文链接

sentinel-rust: Rust 版本的 sentinel

Sentinel 是一个面向分布式服务架构的高可用流量控制组件. 现在 Rust 版本已加入

github 地址

<<Programming Rust>> 第二版电子书已上架

<<Programming Rust>> 第二版的在线电子书现已上架.

原文链接

--

From 日报小组 BobQin,FBI小白

社区学习交流平台订阅:

评论区

写评论
c5soft 2021-09-07 17:14

一段有意思的代码,await调用不以async开头的函数是可以编译的:

use std::{future::Future};

#[tokio::main]
async fn main()->() {
    let a = foo().await;
    println!("a={}", a);
}

fn foo() -> impl Future<Output = usize> {
    async { 1 }
}

foo函数这种写法展示了async fn的本质。

c5soft 2021-09-07 16:48

严重同意《async 的另外一钟语法方案》作者的观点,目前async fn 返回值的语法虽然简洁,但是一种欠考虑的缺陷设计。

一个简单的例子:

async fn foo() ->  usize { 1 }

可以说该语法设计是错误的,正确语法应该是:

async fn foo() -> impl Future<Output = usize> { 1 }

其中async关键字是函数体async{...}的语法糖,上述表达与下述表达等价:

fn foo() -> impl Future<Output = usize> { async { 1 } }
1 共 2 条评论, 1 页