rust
文章平均质量分 52
聆听--风雨
这个作者很懒,什么都没留下…
展开
-
rust tokio select!宏详解
本文介绍Tokio中select!的用法,重点是使用过程中可能遇到的问题,比如阻塞问题、优先级问题、问题。在Tokio中,select!是一个宏,用于同时等待多个异步任务,并在其中任意一个任务完成时执行相应的逻辑。原创 2023-11-27 08:00:00 · 797 阅读 · 1 评论 -
rust实现quic服务端和客户端
演示如何使用 Quinn 库实现一个简单的 QUIC 客户端和服务器。QUIC 是一种基于 UDP 的协议,用于在互联网上进行快速和安全的通信。原创 2023-11-11 03:30:00 · 1082 阅读 · 0 评论 -
Blocking waiting for file lock on the registry index 问题解决
本文介绍如何解决cargo build时一直卡在Blocking waiting for file lock on the registry index问题原创 2023-11-07 19:52:39 · 278 阅读 · 0 评论 -
Rust实现基于Tokio的限制内存占用的channel
本文介绍如何基于tokio的channel实现一个限制内存占用的channel。原创 2023-10-24 20:03:19 · 637 阅读 · 0 评论 -
actix http消息处理源码剖析
本文以官方示例入手,剖析一下http消息的处理流程。原创 2022-09-03 20:14:41 · 1002 阅读 · 0 评论 -
tokio channel性能测试
本文通过简单的场景测试tokio 中channel的收发性能。代码开了两个线程,一个收一个发,持续十秒。最终打印每秒发送次数。原创 2022-07-18 14:22:35 · 598 阅读 · 0 评论 -
rust入门学习指南
已入职新公司三个月,rust技能从0开始,到现在已经可以熟练编写各种功能了。这里分享一下笔者的rust学习路线。原创 2022-06-15 20:31:25 · 3969 阅读 · 2 评论 -
rust-analyzer 的warning/error提示与实际位置不符合问题解决
环境:windows vscode rust-analyzer问题现象如下图,错误提示出现在莫名其妙的地方。原因:应该是最近版本引入的bug。解决方法:回退到历史版本,或者更新为预览版。笔者是选择了升级到预览版。参考:https://github.com/rust-lang/rust-analyzer/issues/12293...原创 2022-05-25 10:14:36 · 1532 阅读 · 0 评论 -
Rust 限流算法crate调研
简介:本文介绍几个Rust中实现了限流算法的crate。背景:最近工作需要实现限流算法。所以调研了一些限流算法。最终认为令牌桶算法比较适合我们的业务场景。想着rust应该有现成的库可以复用,所以简单看了下。几个可选的crate1、leaky_bucket - Rust基于tokio 异步的,实现了令牌桶算法,通过acquire接口来获取令牌。获取不到的时候会阻塞当前协程。use leaky_bucket::RateLimiter;let limiter = RateLi原创 2022-05-23 22:30:00 · 787 阅读 · 0 评论 -
actix websocket消息处理流程源码剖析
通过阅读actix源码剖析其消息处理的流程。原创 2022-05-20 08:30:00 · 669 阅读 · 0 评论 -
rust hashmap 按值排序
use std::collections::HashMap;use rand::random;fn main() { let mut count: HashMap<char, u32> = HashMap::new(); for i in 0..26 { count.insert( ('a' as u8 + i) as char, (random::<usize>() % 26).try_int.原创 2022-05-19 23:00:00 · 1347 阅读 · 0 评论 -
rust 使用tokio的Notify 和timeout实现类似可超时条件变量的效果
Notify配合timeout,在异步编程中实现类似可超时条件变量的效果原创 2022-04-22 21:00:00 · 1784 阅读 · 0 评论 -
rust 使用hotwatch 监控文件变化
hotwatch是一个可以监控文件变化的crate,使用起来非常方便。参考:GitHub - francesca64/hotwatch: A Rust library for conveniently watching and handling file changes.代码示例如下:use std::{thread::sleep, time::Duration};fn main() { use hotwatch::{Event, Hotwatch}; let mut hot原创 2022-04-10 13:07:44 · 5270 阅读 · 0 评论 -
cargo build failed to run custom build command for `openssl-sys v0.9.72` 问题解决
问题:新装的ubuntu环境,cargo build失败,报错failed to run custom build command for `openssl-sys v0.9.72` ,如下图。解决方法:运行以下命令apt install pkg-config -y apt-get install libssl-dev -y原创 2022-04-05 18:44:35 · 2048 阅读 · 0 评论 -
rust 线程间传递裸指针
前言:众所周知,rust中要想在线程间传递对象,该对象必须实现Send或者Sync的trait。而裸指针是不能在线程间传递的。但是某些场景下又需要在线程间传递裸指针,比如夸语言编程的时候,需要将一个C的指针在多线程间使用。此时就需要一些技巧了。本文介绍如何在线程间传递裸指针。一、正常场景如下述代码所示,一般情况下我们使用多线程move的都是可以Send的对象。此时,该对象会在每个线程中都拷贝一份。所以多线程可以正常运行。fn main() { use std::thread;...原创 2022-04-01 00:45:00 · 1159 阅读 · 0 评论 -
rust 在x64平台上交叉编译aarch64的成果物
rust 在x64平台上交叉编译aarch64的成果物原创 2022-03-26 12:46:25 · 2804 阅读 · 2 评论 -
Rust 多线程操作全局变量
本实例实现以下逻辑:1、定义了一个全局变量CURRENT_SEQ用于记录序列号2、另一个全局变量SEQ_VEC用于放置生成的序列号。3、开了50个线程,每个线程中都对CURRENT_SEQ执行1000次+1操作并将结果放入SEQ_VEC4、输出SEQ_VEC代码如下:use once_cell::sync::Lazy;use std::sync::atomic::{AtomicUsize, Ordering};static CURRENT_SEQ: AtomicUsize =原创 2022-03-24 23:30:00 · 1701 阅读 · 0 评论 -
cargo test 报错 STATUS_DLL_NOT_FOUND
windows 下 运行cargo test 报错,如下:The command "cargo test --all" exited with 127. Finished test [unoptimized + debuginfo] target(s) in 25.78s Running target\debug\deps\ggwp_zgui-3b74f8e4b6c31eb3.exe Running target\debug\deps\ggwp_zscene-ec8c5c4原创 2022-03-17 16:54:20 · 1360 阅读 · 0 评论