
rust
跨链技术践行者
区块链研究员
-
转载 Rust异步浅谈
前提 这篇文章主要描述了Rust中异步的原理与相关的实现,Rust异步也是在最近的版本(1.39)中才稳定下来。希望可以通过这边文章在提高自己认知的情况下,也可以给读者带来一些解惑。(来自于本人被Rust异步毒打的一些经验之谈). 阅读这篇文章需要对操作系统,IO多路复用,以及一些数据结构有一定的概念。 老生常谈,几乎所有的语言中异步相关的解释都是统一的:线程切换开销大,且资源浪费(主要集中在内存上),这篇文章假定读者已对这些情况已知晓。Future Future字面的意思.2021-04-02 11:37:3733
0
-
转载 Rust异步之Future
Rust异步之Future对异步的学习,我们先从Future开始,学习异步的实现原理。等理解了异步是怎么实现的后,再学习Rust异步编程涉及的2个库(futures、tokio)的时候就容易理解多了。Futurerust中Future的定义如下,一个Future可以理解为一段供将来调度执行的代码。我们为什么需要异步呢,异步相比同步高效在哪里呢?就是异步环境下,当前调用就绪时则执行,没有就绪时则不等待任务就绪,而是返回一个Future,等待将来任务就绪时再调度执行。当然,这里返回Future时关键2021-03-22 13:49:3446
0
-
转载 Tokio,Rust异步编程实践之路
缘起在许多编程语言里,我们都非常乐于去研究在这个语言中所使用的异步网络编程的框架,比如说Python的 Gevent、asyncio,Nginx 和 OpenResty,Go 等,今年年初我开始接触 Rust,并被其无 GC、内存安全、极小的运行时等特性所吸引,经过一段时间的学习,开始寻找构建实际项目的解决方案,很快 mio、tokio 等框架进入了我的视野,于是开始从更加底层的 mio 出发实验。https://github.com/Hevienz/mio_test/blob/master/sr2021-03-21 12:57:4592
0
-
转载 Rust太难?那是你没看到这套Rust语言学习万字指南!
摘要:从开发环境、语法、属性、内存管理和Unicode等五部分,为你带来一份详细的Rust语言学习的精华总结内容。 一、Rust开发环境指南 1.1 Rust代码执行 根据编译原理知识,编译器不是直接将源语言翻译为目标语言,而是翻译为一种“中间语言”,编译器从业人员称之为“IR”--指令集,之后再由中间语言,利用后端程序和设备翻译为目标平台的汇编语言。 Rust代码执行: 1) Rust代码经过分词和解析,生成AST(抽象语法树)。 2) 然后把AS...2021-03-10 11:31:12103
0
-
转载 Rust:如何在运行时读取配置文件并将其存储在可跨线程访问的全局结构中?
这是我在Rust中的第一个项目,我想我缺少一些简单的东西。我试图创建一个简单的Web API守护程序,该守护程序将接收JSON的POST,解析JSON并使用配置文件中提供的凭据发送电子邮件。90%的问题都很容易。我正在努力与“在运行时解析配置文件”。我已经成功使用hyper和letter来接收JSON和发送电子邮件。但是我希望这个守护进程可以在服务器上配置,而不是在构建时配置(就像大多数Linux / Unix守护进程一样)。我一直在这里努力工作。我创建了一个配置模块,声明了一个结构,并...2021-03-10 10:29:2173
0
-
转载 关于Rust读取自定义toml文件
参考链接:https://github.com/baoyachi/read-toml 思路,关于自定义的toml文件应该有一定配置规则,不清楚或者不了解toml文件配置的点击这个链接 知道toml的使用后,配置对应的配置选项,然后利用程序读取配置达到我们文件可动态配置的目的(下面这是对于toml配置的演示) [[ip_config]]name="CN"ip="192.168.1.1"port="11"[[ip_config]]name="TW"ip="192.168.2.2021-03-01 15:50:12129
0
-
转载 generics - 如何在Rust中添加一个泛型类型实现另一泛型类型的约束?
我怎么能做这样的工作:struct FooStruct<A, B> where A : B, B : ?Sized {...}我搜索了一些类型标记来告诉编译器S一定是一个特性,在Rust文档中搜索了这个模式的一些示例,但找不到其他有相同问题的人。这是我的代码:trait Factory<S> where S : ?Sized { fn create(&mut self) -> Rc<S>;}trait Singleton<2021-03-01 14:16:5748
0
-
转载 Rust轻量级I/O库mio
Rust轻量级I/O库miomio是rust实现的一个轻量级的I/O库。其实现基本上就是对不同操作系统底层相关API的封装,抽象出统一的接口供上层使用。Linux下为epoll,Windows下为IOCP,OS X下为kqueue。一、关于mio1、重要特性非阻塞TCP,UDP I/O事件通知epoll,kqeue,IOCP实现 运行时零分配 平台可扩展2、基础用法其使用方法与Linux中epoll差不多,mio底层封装了epoll,使用步骤思路:创建Poll 注册事件2021-02-20 17:36:12135
0
-
转载 gRPC——Rust应用实例
gRPCRPC (Remote Procedure Call)即远程过程调用,是分布式系统常见的一种通信方法,已经有 40 多年历史。而gRPC是由Google主导开发的RPC框架,使用HTTP/2协议并用ProtoBuf作为序列化工具。希望通过它使得各种微服务之间拥有统一的 RPC 基础设施。它不仅支持常规的平台如 Linux,Windows,还支持移动设备和 IoT,现有十几种语言的实现。在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,..2021-02-20 17:21:5090
0
-
转载 Rust中使用Protocol Buffers
Rust中使用Protocol BuffersGoogle Protocol Buffer(简称 Protobuf)是一种轻便高效的结构化数据存储格式,平台无关、语言无关、可扩展,可用于通讯协议和数据存储等领域。下面给出在Rust中使用Protocol Buffers的基本流程步骤。下面以Ubuntu-16.04LTS为例:一、安装protoc0.预先安装sudo apt-get install autoconf automake libtool curl make g++ unzip2021-02-20 17:12:1166
0
-
转载 Tokio 和 Async IO 到底都是些啥玩意?
我已经关注 Rust 一段时间了, 也在慢慢自学一些相关内容. 最近 Async IO, 也就是异步IO的一些标准语法也已经包含在了Rust 稳定版本里面比如async和await关键字.可我之前在学习 Async IO的过程当中, 一直有些疑惑. 比如那些经常听说的库tokio,mio,futures等等, 到底都是干嘛用的? Rust的 Async IO 和 其他语言, 比如Go的协程, 是不是类似的概念?后来无意当中搜到了 Manish Goregaokar (Mozilla的...2021-02-19 15:29:2958
0