首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Rust
chirpyli
创建于2021-12-03
订阅专栏
Rust相关技术分享
等 8 人订阅
共15篇文章
创建于2021-12-03
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Rust异步之自己实现block_on
本文主要是学习理解Rust异步编程中的block_on实现。我们先看如下的一个代码: 一个block_on代码示例 我们在进行异步编程时,经常会有下面形式的代码: 我们看一下tokio中关于block
Rust异步之Future
对异步的学习,我们先从Future开始,学习异步的实现原理。等理解了异步是怎么实现的后,再学习Rust异步编程涉及的2个库(futures、tokio)的时候就容易理解多了。 rust中Future的定义如下,一个Future可以理解为一段供将来调度执行的代码。我们为什么需要异…
Rust写时复制Cow<T>
写时复制(Copy on Write)技术是一种程序中的优化策略,多应用于读多写少的场景。主要思想是创建对象的时候不立即进行复制,而是先引用(借用)原有对象进行大量的读操作,只有进行到少量的写操作的时候,才进行复制操作,将原有对象复制后再写入。这样的好处是在读多写少的场景下,减…
记一次排查内存泄漏的过程
程序测试运行过程中,其中一个进程被Linux系统给杀掉了,查看系统日志,发现是进行占用内存过大而触发Linux OOM给杀掉了。重启反复几次后均被杀掉,发现是内存泄漏问题。另发现有的时候有内存泄漏,有的时候没有内存泄漏。针对这种情形,首先想到的是进行重现,然后使用工具检测排查,…
Rust实现的常用密码学库
主要介绍rust-crypto和tiny-keccak这两个Rust实现的常用密码学库。 Rust实现的密码学库,包含了密码学中常用的对称密码、公钥密码、单向散列函数、消息认证码、数字签名、随机数生成器等算法。目前支持以下算法: Keccak是一种被选定为SHA-3标准的单向散…
Rust轻量级I/O库mio
mio是rust实现的一个轻量级的I/O库。其实现基本上就是对不同操作系统底层相关API的封装,抽象出统一的接口供上层使用。Linux下为epoll,Windows下为IOCP,OS X下为kqueue。 mio提供可跨平台的sytem selector访问,不同平台如下表,都…
线程池的简单实现(Rust)
线程池,就是一组工作线程,工作线程的数量一般与CPU核数相关(如果是CPU密集型任务,可初始设为,如果是IO密集型任务,可初始设为,运行过程中可能会依据任务的繁忙程度而动态增减),由线程池负责管理工作线程的创建,异常处理(如果工作线程异常退出,会创建新的工作线程弥补线程池中的工…
Rust中使用Protocol Buffers
Google Protocol Buffer(简称 Protobuf)是一种轻便高效的结构化数据存储格式,平台无关、语言无关、可扩展,可用于通讯协议和数据存储等领域。下面给出在Rust中使用Protocol Buffers的基本流程步骤。 还可使用源码安装,从github上cl…
Rust中的panic宏
panic!会立即终止程序,同时rust中的Option和Result出现None和Err时都会触发panic。 有时我们希望将panic信息输出到日志中,标准库中的std::panic可以满足需求。可以设置一个类似于windows中的钩子函数,在panic发出后,在panic…
Rust完全限定语法与消歧义:调用相同名称的方法
Rust既不能避免一个trait与另一个trait拥有相同名称的方法,也不能阻止为同一类型同时实现这两个trait。甚至可以直接在类型上实现开始已经有的同名方法!当然,当调用这些同名方法时,你必须要告诉Rust我们使用哪一个。 在存在调用相同名称方法时,重要的是告诉编译器你调用…
Rust生命周期bound用于泛型的引用
为什么会编译错误呢?因为T可以是任意类型,T自身也可能是一个引用,或者是一个存放了一个或多个引用的类型,而他们各自可能有着不同的生命周期。Rust编译器不能确认T会与'a存活的一样久。 所以编译器才提示我们:T的生命周期可能不够长,建议我们对泛型T进行生命周期bound,限定T…
Rust中的const和static
这里说一下Rust中的const和static,因为经常会用到,而且与其他语言略微有点区别,如果用其他语言的含义理解Rust中的,可能会造成困扰。 对于const,常量贯穿于整个程序的生命周期。更具体的,Rust 中的常量并没有固定的内存地址。这是因为实际上它们会被内联到用到它…
【Rust】RefCell和内部可变性
即在编译阶段,当有一个不可变值时,不能可变的借用它。如下代码所示: 但是在实际的编程场景中可能会需要在有不可变引用时改变数据的情况,这时可以考虑Rust中的内部可变性。其借用规则检查由编译期推迟到运行期。对应的,在编译期借用规则检查不通过,则会产生编译错误;而运行期借用规则检查…
Rust关联类型与默认泛型类型参数
下面是上面代码的注解:Iterator trait 有一个关联类型 Item。Item是一个占位类型,同时 next 方法会返回 Option<Self::Item>类型的值。这个 trait的实现者会指定 Item的具体类型。 这里的type用法就是关联类型。 这里Add<R…
【Rust】更换Crates源
Rust开发时有时使用官方的源太慢,可以考虑更换使用国内中科大的源。更换方法如下: