#macroweb
本文不是宏教程,做者写这篇文章的目的就是为了让尚未使用过Rust宏的人,早点尝试一下宏。(真香预警)编程
做者比较了Rust和其余语言(C/C++/Java)中的元编程,摘要:安全
C宏和Cpp模板元编程。很容易引入难以发现的错误,而且会扰乱编译时间,在构建中引入没必要要的复杂性。你是否见过错误使用模板而引起的编译器错误呢?数据结构
Java注解。Java的注解功能很强大,能够在编译时使用,也能够在运行时执行,既能够用于代码生成,又能够拿来反射。Java中最受欢迎的Spring框架大量使用Java注解。但正由于如此,Java的注解功能致使你写的代码可能超越语言自身的语义,而更像是另一种语言。并且经过注解实现的代码,调试起来也很是痛苦。app
那么Rust的宏是否是彻底避免了上面的问题呢?并非百分百的避免,可是Rust已经努力避免了常见的问题,而且能够发挥出Rust语言自身的优点。做者介绍了声明宏和过程宏的一些优点,而且在文章底部列出了一些学习宏的资料。框架
#actix-web #face_detectionide
这是上第二天报里报道过「使用tensorflow与rust人脸检测」文章做者的续篇。在这篇内容里,做者介绍了如何将上一篇文章的成果经过HTTP API来提供。而且做者使用了actix-web = "1.0.0-alpha.4"
版本。在mtcnn库的actix-web分支里能够看到具体实现。微服务
这两篇文章是实践性很强的文章,建议你们跟着玩玩。工具
Read More性能
上篇文章人脸检测Rust库:mtcnn
#nom #peg #pest
和pest相似,但它是基于nom实现的。
nom-peg
#youtube
Read More
#irc #bot
url-bot-rs
#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_to_stable
本文是Seq团队写的。Seq是一个微服务诊断SaaS产品,它们的存储引擎是使用Rust实现的(应该未开源)。从Seq 5.1开始,迁移到了Stable Rust。整个迁移过程说是毫无痛苦。感兴趣的能够看看。
(开发Rust产品须要依赖的features列表愈来愈少了,这是好事)