在当今海量数据处理场景下,高效的范围查询能力成为许多系统的关键需求。RocksDB作为一款高性能的嵌入式键值存储引擎,其独特的LSM树结构和索引设计为范围查询提供了底层支持。本文将深入探讨如何在Rust中利用RocksDB的特性来实现高效范围查询,从键的设计原则到迭代器的工程实践,再到性能优化的实战 ...
在 AI 与机器人技术深度融合的今天,传统机器人框架的性能瓶颈和开发效率问题日益凸显。dora-rs应运而生,成为一款基于 Rust 语言的高性能、现代化机器人框架。其核心目标是通过数据流驱动的设计范式,解决机器人开发中低效通信、跨语言集成困难等问题,并在性能上实现对 ROS/ROS2 等传统框架的... ...
学习要,工作也不能拉下,所以这一段时间关于rust的博文少了些。 rust要学习的内容还很多,但我觉得应该优先打好基础,这其中比较关注的是并发。 提到rust的并发,先回忆在书本<<rust编程语言>>有许多的内容: 1.并发和并行 2.通过信道(channel)共享进程间数据 关键库和方法 std ...
一、背景与目标:为什么做一个“非典型”的RSS阅读器? 在信息爆炸的时代,RSS依然是高效获取结构化内容的重要方式,但市面上主流阅读器要么功能冗余(如集成社交属性),要么技术栈陈旧(依赖Electron导致内存占用高、性能差)。我们希望打造一款简约轻量、高效率、高性能、隐私安全的RSS阅读器,核心需 ...
Option类型是Rust中非常重要的一个类型,和Result也类似。 本文主要根据文档:枚举类型Option编写 主要阐述以下内容: 1.Option和Result比较 2.Option的主要方法 3.示例 1.Option和Result比较 以下内容来自于文心一言 特性 Option Resul ...
引言 你是否遇到过 Rust 并发场景下的资源竞争、性能瓶颈? 当多个线程同时抓取网页导致 IP 被封、多线程读写本地数据引发一致性问题时,如何优雅地实现线程安全? 本文结合开源项目 Saga Reader 的真实开发场景,深度解析 Arc/Mutex/RwLock 的实战技巧,带你从 “踩坑” 到 ...
在rust中,匿名函数(或者说闭包)大量存在,所以有必要再次讨论匿名函数的一些问题。 其中比较关键的是和FnXXX特质的关系,以及和被捕获变量的关系。 本文的目的在于确认几个要点: 一、FnOnce,FnMut,Fn简单比较 比较汇总表 分类 执行次数 是否可以修改捕获的外部变量 是否归还捕获的外部 ...
在软件开发过程中,软件测试对于保障软件质量和用户满意度起着关键作用。为最大程度上提升软件品质,我们积极开展全链路测试实践,打造了用Rust语言开发的自研一站式抓包代理工具FunProxy,基于其跨平台、高性能、易于扩展、安全性高等特性,让全链路抓包和环境代理如丝绸般丝滑。 ...
毫无疑问,宏是rust中极其重要的存在,只要我们看看一些标准库的代码。本文阐述rust宏相关的若干问题 一、宏的定义和作用 先介绍下宏的起源和历史,以便读者更能体会。 以下内容来自文心一言生成: 词源与早期含义 希腊-拉丁词根 "macro"源于希腊语前缀μακρο-(makro-),意为“大”或“ ...
函数指针是一个好东西。 一、简述 函数指针就是执行一段函数代码的指针。 根据官方的说法,函数指针实现了FnOnce,FnMut,Fn特质。 由于函数指针是一种数据类型,所以rustc允许它作为函数/方法的参数,这样就给程序设计添加了不少的灵活性. 我估摸着,rust设计者就是为了让rust能够适应潮 ...
DST(dynamic size type)-中译“动态大小类型"。本文简要讨论动态大小类型的一些问题。 一、前言 rust作为一门静态类型语言,和大部分其它静态类型语言(C,C++,C#,JAVA)一样,希望在编译的时候知道每个实例/类型的大小。 作为静态类型语言,优点是毋庸置疑的的: 1.类型错 ...
这两个内容都比较容易理解。 一、新类型(newtype)模式 注意,这里说的是一种编程模式,不是说有一个叫newtype的类型。 这种编程模式的含义:为某个类型作个封装,构建一个新的类型,以便绕过某些束缚,从而达成特定目的。 目的如下: a.用于抽象掉一些类型的实现细节 b.可以隐藏其内部的泛型类型 ...
回忆下孤儿规则: 1.只有当一个trait或类型在当前的crate中定义时,才能为外部类型实现该trait。 没有限定是特质还是类型 反过来,如果特质和类型都是外部,那么不能在当前单元包实现 2.例外情况-std中特质是例外。大体验证了凡事都有例外 孤儿规则的目的:避免编译器无法确定应该用哪一个实现 ...
点击查看代码 fn main() { let v = vec![1, 2, 3, 4]; let a: Vec<_> = v.iter().filter(|x: &&i32| *x % 2 == 0).map(|x: &i32| x * 2).collect(); let b: Vec<_> = v ...
有的时候,可能希望使用的特质已经实现了其它特质(看后面可以知道,实际是要求相关类型实现了其它特质)。 RUST支持为特质(trait)指定限定的特质。 例如我们定义特质A,之后定义了类型T,这个时候还希望T已经实现了特质TC。 在rust中就是这个语法: trait tx:t1 trait tx:t ...
rust中看不到java等一些OOP语言的中用于修饰方法的static之类的关键字眼。 注:rust有static关键字,目前是用于修饰生命周期的或者是变量的 例如: let leaked_str: &'static str = Box::leak(tmp.into_boxed_str()); st ...
一、前言 为通用类型赋予一个默认的类型,大部分的语言是没有这个特性的,但是也有例外的,例如TypeScript(可能还有其它)。 例如TypeScript可以这样使用: class MyClass<T = number> { value: T; constructor(value: T) { thi ...
这是rust特质(trait)中颇有意思的一个特性。 一、前言 这个特性,在前面已经有接触过,例如书本的第十三章节的迭代器特质就有这个例子: impl Iterator for BooksIterator { type Item = String; fn next(&mut self) -> Opt ...
一、前言 看UNION的定义,颇为惊讶,居然有这样的类型(以前没有怎么用过C)。 以下一段来自于文心一言: 1.定义和用途union允许在相同的内存位置存储不同类型的数据,但在任意时刻只能使用其中一个类型。适用于需要在节省内存的情况下灵活存储不同类型数据的场景。2.内存布局所有字段共享相同的内存位置 ...
一、前言 1.1、为什么要使用不安全块访问可变静态变量 根据rust设计人的理解:静态变量是可以修改,所以在并发情况下是可能存在并发/并行时候的不一致问题(如果要修改),这可能就不安全了。 所以,rust规定访问可变静态变量需要使用不安全代码块(unsafe块)。 1.2、比较静态变量和常量 1.常 ...