ITPub博客

首页 > 数据库 > 数据库开发技术 > 【Rust日报】 2019-04-11

【Rust日报】 2019-04-11

原创 数据库开发技术 作者:Rust语言中文社区 时间:2019-04-11 15:53:13 0 删除 编辑

一封写给Rust宏的情书


#macro


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


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


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

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



那么Rust的宏是不是完全避免了上面的问题呢?并不是百分百的避免,但是Rust已经努力避免了常见的问题,并且可以发挥出Rust语言自身的优势。作者介绍了声明宏和过程宏的一些优势,并且在文章底部列出了一些学习宏的资料。





使用Actix Web进行人脸检测


#actix-web #face_detection


这是上次日报里报道过「使用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列表越来越少了,这是好事)


Read More



From 日报小组 @Chaos

日报订阅地址:

  • Telgram Channel

  • 阿里云语雀订阅

  • Stemmit

  • Rust.cc论坛

  • GitHub


PS:公众帐号中不能加外链,这个问题怎么解决?暂时点不了的链接,请点左下角:“阅读原文”查看。

原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-06-11

  • 博文量
    1769
  • 访问量
    718320