【Rust日报】 2019-04-11

一封写给Rust宏的情书


#macroweb


本文不是宏教程,做者写这篇文章的目的就是为了让尚未使用过Rust宏的人,早点尝试一下宏。(真香预警)编程


做者比较了Rust和其余语言(C/C++/Java)中的元编程,摘要:安全


  • C宏和Cpp模板元编程。很容易引入难以发现的错误,而且会扰乱编译时间,在构建中引入没必要要的复杂性。你是否见过错误使用模板而引起的编译器错误呢?数据结构

  • Java注解。Java的注解功能很强大,能够在编译时使用,也能够在运行时执行,既能够用于代码生成,又能够拿来反射。Java中最受欢迎的Spring框架大量使用Java注解。但正由于如此,Java的注解功能致使你写的代码可能超越语言自身的语义,而更像是另一种语言。并且经过注解实现的代码,调试起来也很是痛苦。app



那么Rust的宏是否是彻底避免了上面的问题呢?并非百分百的避免,可是Rust已经努力避免了常见的问题,而且能够发挥出Rust语言自身的优点。做者介绍了声明宏和过程宏的一些优点,而且在文章底部列出了一些学习宏的资料。框架





使用Actix Web进行人脸检测


#actix-web #face_detectionide


这是上第二天报里报道过「使用tensorflow与rust人脸检测」文章做者的续篇。在这篇内容里,做者介绍了如何将上一篇文章的成果经过HTTP API来提供。而且做者使用了actix-web = "1.0.0-alpha.4"版本。在mtcnn库的actix-web分支里能够看到具体实现。微服务


这两篇文章是实践性很强的文章,建议你们跟着玩玩。工具


  • Read More性能

  • 上篇文章人脸检测Rust库:mtcnn



nom-peg: 基于nom实现的PEG解析器生成器工具


#nom #peg #pest


和pest相似,但它是基于nom实现的。


nom-peg



「视频」深刻WASM和WASI


#youtube


Read More



Rust实现的IRC机器人


#irc #bot


url-bot-rs



使用Rust开发跨平台组件的新策略


#FFI #cross_platform


Mozilla工程师最新分享,将Rust实现的核心业务逻辑封装到一个中间层,而后经过新的共享策略,达到Web、iOS、Android三端共享。实施这个策略遇到的一个问题就是如何安全地使用FFI,而且还能与Rust的全部权良好地配合。所以该团队写了一个ffi-support库来帮助达成此目的。


该库最初的实现方案是经过序列化为JSON字符串在FFI中传递。可是缺点是,JSON序列化和反序列化会很慢。最重要的问题是,Java中字符串编码是UTF-16-ish。在Kotlin中,必须反序列化每一个数据结构,这个过程会可能会发生异常。最严重的问题是,没有返回JSON字符串,而是某个C指针,忘记更新Kotlin中或者ObjectiveC中的数据结构,致使严重的内存问题。


值得庆幸的是,团队发现了使用Protocol BufferV2替代JSON,能够解决上面的问题。在Rust中直接使用prost库,能够经过Rust的宏生成很是干净的结构。并且,PB比JSON的性能高。

图片

  • Read More

  • ffi-support



「经验之谈」从Nightly到Stable Rust迁移之旅


#nightly_to_stable


本文是Seq团队写的。Seq是一个微服务诊断SaaS产品,它们的存储引擎是使用Rust实现的(应该未开源)。从Seq 5.1开始,迁移到了Stable Rust。整个迁移过程说是毫无痛苦。感兴趣的能够看看。


(开发Rust产品须要依赖的features列表愈来愈少了,这是好事)

相关文章
相关标签/搜索