【Rust日报】 2020-06-04 微软对 Rust 的热爱是怎么回事?

微软对 Rust 的热爱是怎么回事?

就在前天【6月2号】,Rust 进入了 TIOBE 指数的前 20 名,它从第 38 位跃升到第 20 位,跃升了惊人的 18 位,这其实是挺罕见的。于是 Visual Studio Magazine 发表了一篇题为 So What's Up with Microsoft's (and Everyone Else's) Love of Rust? 的博文,更多详情请看:https://visualstudiomagazine.com/articles/2020/06/02/rust-love.aspx?m=1

ct_python!

ct_python!是一个 Rust 宏,用于在编译时执行 Python 代码,并将输出作为 Rust 代码插入到 Rust 程序中。它是 inline-python【https://github.com/fusion-engineering/inline-python】的一部分。

#![feature(proc_macro_hygiene)]use ct_python::ct_python;
static SIN_2: f64 = ct_python! {    from math import sin    print(sin(2))};
ct_python! {    print("type num = f64;")}
fn main() {    assert_eq!(num::sin(2.0), SIN_2);}

syn-rsx

首先 syn(https://github.com/dtolnay/syn) 是一个解析库,用于将 Rust 令牌流解析为 Rust 源代码的语法树。

syn-rsx 基于 syn,是一个类似于 JSX 的 TokenStreams 解析器。解析的结果是嵌套的 Node 结构,类似于浏览器 DOM,其中节点名称和值是支持构建 proc 宏的 syn 表达式。并提供了用于自定义解析行为的 ParserConfig。

项目地址:https://github.com/stoically/syn-rsx

示例:

use quote::quote;use syn_rsx::parse2;
let tokens = quote! {    
"hello"
}; let nodes = parse2(tokens, None).unwrap(); let node = &nodes[0];assert_eq!(node.attributes[0].name_as_string().unwrap(), "foo"); let children = &node.children;assert_eq!(children.len(), 2);assert_eq!(children[0].children[0].value_as_string().unwrap(), "hello");assert_eq!(children[1].name_as_string().unwrap(), "world");

使用 Rocket 进行 Rust web 开发实例

这是油管上的一个较短视频教程,约 20 分钟,结合实际例子,讲述使用 Rocket 框架进行简短、易用、类型安全的 Rust web 开发。地址:https://www.youtube.com/watch?v=tjH0Mye8U_A&feature=youtu.be


From 日报小组 @Jancd

你可能感兴趣的:(【Rust日报】 2020-06-04 微软对 Rust 的热爱是怎么回事?)