ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【Rust日报】 2019-04-11

2021-05-11 09:52:07  阅读:101  来源: 互联网

标签:11 Java 04 JSON 2019 使用 注解 序列化 Rust


一封写给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列表越来越少了,这是好事)


标签:11,Java,04,JSON,2019,使用,注解,序列化,Rust
来源: https://blog.51cto.com/u_15127605/2766544

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有