
Rust
文章平均质量分 54
rustroom
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Rust : 关于解引用“*”
本文主要探讨Rust中解引用操作符(*)的使用场景和注意事项。通过多个代码示例展示了:1) 基本解引用和重新借用的模式匹配;2) 自定义智能指针MyBox与Deref特性的实现;3) 解引用导致所有权转移的情况;4) 可变引用的解引用赋值;5) match语句中与ref、_等模式搭配使用时的所有权处理。特别指出Box和自定义MyBox在解引用行为上的差异,以及match模式中ref和_等特殊符号避免所有权转移的作用。原创 2025-09-15 15:45:09 · 321 阅读 · 0 评论 -
Rust : 关于Deref
本文介绍了Rust中Deref Trait的核心概念和用法。Deref Trait通过隐式自动解引用来简化代码操作,其核心逻辑是将*T转换为*(T.deref())。文章详细解析了常见的取引用和解引用操作,包括&*T、&**T等组合操作的含义,并重点说明了点操作符.背后隐含的多步自动解引用过程。此外,还介绍了通过Deref实现的类型转换&T到&U的机制,以及这种转换在函数参数传递中的应用场景。理解Deref Trait的自动解引用特性对掌握Rust所有权系统至关重要。原创 2025-09-12 16:50:54 · 348 阅读 · 0 评论 -
【转】Rust的Cow类型有什么用?详解Cow及其用途
本文介绍了Rust中的Cow<B>智能指针,它实现了写时复制(COW)优化策略。Cow<B>是一个枚举类型,包含Borrowed和Owned两个变体,当需要修改数据时才进行复制。文章详细讲解了Cow<B>的定义、构造方法、Deref特性,以及通过to_mut()和into_owned()进行修改和消费的操作。最后以标准库中的String::from_utf8_lossy方法为例,展示了Cow在实际应用中的价值,能够有效减少不必要的复制开销,提升性能。转载 2025-09-11 10:11:29 · 52 阅读 · 0 评论 -
【转】Rust语言圣经之定海神针 Pin 和 Unpin
相信大家看到这里,脑袋里已经快被 Pin 、 Unpin 、!Unpin 整爆炸了,没事,我们再来火上浇油下:)若 T: Unpin ( Rust 类型的默认实现),那么 Pin<'a, T> 跟 &'a mut T 完全相同,也就是 Pin将没有任何效果, 该移动还是照常移动绝大多数标准库类型都实现了 Unpin ,事实上,对于 Rust 中你能遇到的绝大多数类型,该结论依然成立 ,其中一个例外就是:async/await 生成的 Future 没有实现 Unpin。转载 2025-08-19 09:23:54 · 155 阅读 · 0 评论 -
Rust:AI编程、过程宏与源码
宏是rust的灵魂小料和魔法。从println!("hello world!")那刻开始,rust世界无宏不成席,无宏不欢。和显性的声明宏不同,隐藏在代码深处的过程宏,静悄悄。尽管它的出现并不是用来装B的,但如果你喜欢装,过程宏一定不可以不玩。你可以不用,但你不能不懂。对rust人来讲,不理解宏,定会少了一份亲切和挚爱。如果从定义逐步展开,过程宏的线索就会慢慢就浮出水面。原创 2025-07-22 14:54:06 · 443 阅读 · 0 评论 -
转Rust 实战丨精品选读
【转】Rust 实战系列丨精品选读原创 2025-06-27 09:39:14 · 239 阅读 · 0 评论 -
Rust: CString、&CStr和String、&str
各种String各有各用途,本文希望有助于加深认识。原创 2025-05-28 17:03:12 · 588 阅读 · 0 评论 -
【转】Rust 多维数组 ndarray
具体点击此文转载 2025-05-23 15:35:36 · 85 阅读 · 0 评论 -
Rust: 从内存地址信息看内存布局
同时,56个字节的分配,从各字段看,第1部分,分配的是field3(24个字节,因其占用最大,排在第1个),其通过3个align结构(8+8+8)来进行安排;它的alignment是8。在最后4个字节中,field6,field7已经用掉了2个,还有2个空的(alignment padding)。内存布局其实有几个:address(地址)、size(大小)、alignment(对齐位数,2 的自然数次幂,2,4,8…(2)接下来是field1,field2,field4,field5,依次占了1个字节。原创 2025-04-21 17:16:12 · 655 阅读 · 0 评论 -
Rust : 生成日历管理markdown文件的小工具
可以输入任意时间段,运行后就可以生成以上的markdown文件。拟生成以下markdown管理小工具,这也是我日常工作日程表。原创 2024-12-02 16:40:24 · 983 阅读 · 0 评论 -
Rust : FnOnce、线程池与多策略执行
如果需要让每一个函数都分配一个线程来执行这些函数(任务),或者用一个线程池来执行函数,这个时侯就可以用上场了。在线程池中,FnOnce是一个其中的灵魂。他可以把所有的函数进行抽象统一,便一管理和执行。一、问题:mpsc如何发送各类不同的函数?二、线程池的应用:发送函数有什么用处?原创 2024-10-15 10:38:42 · 892 阅读 · 0 评论 -
Rust: 实现 async/await的详细代码【来源脚本之家】
实际上,Rust 选择将 executor 的实现交给第三方,自己只保留相关的交互接口(我在隔壁C++看了看,似乎也是一样的做法,并没有一个官方的 executor 实现,我唯一所知的在语言层面提供支持的只有Golang 的 goroutine)。值得注意的是,在第一种情况下,所有的 Future 都 poll 了一遍,FuturesUnordered 会调用一次 wake,告诉 executor FuturesUnordered 已经运行了一个轮回,wake 具体的实现则取决于 executor。转载 2024-09-18 13:27:25 · 721 阅读 · 0 评论 -
Rust : 从事量化的生态现状与前景
尽管做适不适合的评价,有点不太靠谱的。就象“黑神话:悟空”,你在设计之前,不同的技术选型,也一定是结合自身的特点和工具、平台自身的优劣来得出来的,可能有一些无奈,可能也有一些经验。回到最初的问题上:在策略开发上,是否适合,这个取决个人的水平,出活快就适合,出活快就算了;即使是一件确定的事呢,也会有不同的答案,因此不同的人,自然有不同的看法。角色和场景不同:有人做策略开发,有人做策略部署,有人做全栈,有人做风控或绩效评估等;语言精通水平不同:有人出神入化,有人只懂皮毛,出活有快有慢,自然会得出不同的结论。原创 2024-09-06 16:36:07 · 2066 阅读 · 0 评论 -
Rust: Web框架Axum和Rest Client协同测试
在vscode中下载Rest Client插件后,通过创建以.http 或 .rest为结尾的文件,进行http请求测试。具体Rest Client功能很强大,这里只介绍,与Axum配合测试的方案。Axum作为Rust当红Web框架,值得了解一下。下面实例包括几个典型的常场场景。涉及到简单路由和提取器等,包括主要类型的文件形态的处理。二、Rest Client工具协同测试。原创 2024-08-29 17:55:53 · 956 阅读 · 0 评论 -
Rust : 数据分析利器polars用法
需要说明的是,在Rust中,不少的功能都需要对应features引入设置,这些需要特别注意,否则编译通不过。Polars虽牛刀小试,就显博大精深,在数据分析上,未来有重要一席。部分函数功能还没有完成,用todo标示,请大家注意。以下polars的版本是0.41.3。下面主要列举一些常见用法。原创 2024-08-16 13:24:42 · 1388 阅读 · 3 评论 -
Rust: 高性能序列化库Fury PK bincode
对于二进制库来讲,据Fury官网的介绍,Fury性能要远远好于protobuf,且不象protobuf还需要定义IDL(即写.proto文件),非常轻便,随取随用。3、从序列化的内容对比来看,对应的u8字列向量,Fury的长度为114;1、对于Fury库而言,大家可以比较一下,不同结构序列化和反序列化的性能。在序列化库中,传统的有Json,XML,性能好的有thrift,protobuf等。不管是序列化和反序列化。目前Rust Fury库,还是初期,还是建议在github官网中,下载到本地。原创 2024-07-05 17:07:36 · 1062 阅读 · 0 评论 -
Rust : windows下protobuf和压缩传输方案
proto文件中主要模拟了一个dbpystream中一个get_price函数的输入和输出的格式,输入HistoryBarRequest ,输出HistoryBarResponse。HistoryBarResponse中,有代码名称,日期,开盘价,最高价等。上面polars,chrono,prost-types,prost-build,prost是关键库,其它暂时可以不看。可见,在src/目录下,创建了一个pb文件夹,存放未来生成的dbdata.proto文件。四、原始数据、main.rs。原创 2024-06-08 16:30:03 · 1522 阅读 · 1 评论 -
Rust : 声明宏在不同K线bar类型中的应用
Rust的宏功能博大精深。在K线bar中,往往有很多不同分时k线图,比如1,2,3,5,。60,120,250,300…我们先考虑,impl_single_bar接受单一的类型参数,比如Bar1,Bar3,Bar5,…如果不用宏,那么手写会比较麻烦。下面就试用一下宏来实现不同类型的bar.这里就需要用到rust宏的重复的写法。这里不特别展开,相关的资料很多。为了简单起见,我们把不同分时的Bar抽象成下面的结构。这样的确方便了一些,但是因为参数是一个个输入,需要。每一个类型,写一行函数,还是不太方便。原创 2024-05-04 14:08:15 · 906 阅读 · 0 评论 -
Rust : condvar中一对一和多对一模式初探
但其它典型的场景可能还有多对一,不断发送通知给一个接收者。假定一个员工收到一个任务,就是模拟是一个时间片,到时了,就会触发通知发出(notify_one)。要注意notify_one()到wait()这个过程,需要特别小心,否则可能会想象中不一样。condvar是不经常碰到的,但其实在tokio之类库中,还是非常核心的作用。通过Mutex中包裹一个Hashmap结构,来对多个通知的状态进行管理。想进一步体会condvar的使用,还是从场景出发。一、一个通知发送者,一个接收者。二、多个通知者,一个接收者。原创 2024-04-19 13:28:31 · 706 阅读 · 0 评论 -
dbpystream:证券股票数据服务API开源
基于上面的痛点 ,dbpystream的目的是根据自身的业务需要,把企业内部的数据进行服务化,让企业内的员工能方便得到数据服务,而不再让数据服务只是一小部分人的特权,让数据可以在更广泛的层面得到充分的利用,并发挥数据驱动业务的价值。dbpystream只做整合部分,不能替代供应商API,是对供应商API服务包装,为了让服务更好的落地,而供应商API做的是一套完整的生产和质量管理流程。供应商的API的服务质量是dbpystream的天花板,没有优秀的供应商服务(源头),就不可能有好的内部服务。原创 2024-03-01 18:05:26 · 772 阅读 · 0 评论 -
Python:关于数据服务中的Web API的设计
需要说明的是,这里讨论的是web api前后端,当然还有其它方案,thrift,grpc等。在web api的基础上,可以提供封装sdk库,供前端函数式调用服务或纯手动写restful api 的方式,自己封装调用函数服务。可以考虑在前端提供不同的选择,比如,是python sdk模式(提供安装包),还是纯restful模式(手写post,get等),以及不同的语言选择,来指定特定后端的序列化和压缩库的选择,便于前端有更好的适用性和体验。不仅需要考虑性能,选择读写高效的库,而且还要考虑跨语言的问题。原创 2024-02-29 08:49:10 · 982 阅读 · 0 评论 -
Rust: reqwest库示例
主要看tokio和reqwest设置就可以了。其它是个人其它的库,没有删除。也可以处理中文字符的问题。cargo.toml文件,同上。二、异步处理多个任务。原创 2024-02-22 17:15:15 · 1256 阅读 · 0 评论 -
CTP:关于cc和bindgen库及rust工程组织
在这个目录下,建一个build.rs,用bindgen库生成cpp.h的头文件相应的rust绑定文件,生成的文件放在ctp-api目录下。这里去除了test,这里这样设置就可以了 .layout_tests(false),否则文件太长了,6-7万行。由ctp-sdk下的build.rs生成(在ctp-sdk下运行cargo build --release).。主要的目的是基于bindgen库生成与cpp的.h文件相对应一个binding.rs文件,后面供策略使用。主要是对ctp进行相关的组织。原创 2023-09-29 22:38:24 · 2593 阅读 · 1 评论 -
Rust : 与C交互动态库和静态库的尝试
c_part下放了ctools.c文件,里面有一些库函数,需要让rust调用。当然,ctools.c也可以放在其它地方,只需要后面的地址一致即可以。需要注意的是,file中ctool.c文件地址一定要准确,否则会有如下报错信息(但没有明示说路径不对,找不到文件之类)。如果rust要调用自建的C库中的函数,情况会较上面复杂一些。今天介绍通过cc库,通过build生成脚本的方式,实现rust调用c端库函数。rust调用C端的库函数,有很多方法,场景也有所不同。三、rust调用C封装好的静态库或动态库。原创 2023-09-16 11:59:33 · 5658 阅读 · 0 评论 -
Rust: 聊聊 *const ()和fn(*const ())
在Bytes库在github源码(https://docs.rs/bytes/1.1.0/src/bytes/bytes.rs.html#94-100)有关Bytes的定义中,进而,查看https://doc.rust-lang.org/src/core/sync/atomic.rs.html#175,可以了解AtomicPtr的定义,另外,*const ()也自然,也可以联想到,它可能是表示指向一个固定的函数的raw pointer.其中的data字段中有(),一般地,()表示一个空元组。原创 2023-08-16 10:01:43 · 1648 阅读 · 0 评论 -
Rust std::mem::transmute实例讲解
要转换容器内容的内部类型,您必须确保不违反任何容器的不变量。其他容器可能依赖于类型的大小、对齐方式,甚至是 TypeId ,在这种情况下,如果不违反容器不变量,就根本不可能进行转换。),调用者必须确保正确对齐指向的值。本文章向大家介绍Rust std::mem::transmute实例讲解,主要分析其语法、参数、返回值和注意事项,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。以下是transmute 的常见应用,可以用更安全的构造替换。将一种类型的值的位重新解释为另一种类型。转载 2023-03-10 14:29:36 · 2009 阅读 · 1 评论 -
关于Rust中的自引用:差之毫厘?!
【代码】关于Rust中的自引用以及指针变化。原创 2023-02-28 15:20:49 · 1421 阅读 · 1 评论 -
rust: clickhouse异步库
在github上有,一个异步连接clickhouse的库,值得一看。具体用法:extern crate tokio;use std::{env, error::Error};use clickhouse_rs::{row, types::Block, Pool};use futures_util::StreamExt;async fn execute(database_url: String) -> Result<(), Box<dyn Error>> {原创 2022-02-25 17:45:14 · 1175 阅读 · 0 评论 -
有意思的网站:https://godbolt.org/
https://godbolt.org/原创 2022-02-08 10:22:07 · 2304 阅读 · 1 评论 -
RUST: Blocking waiting for file lock on package cache
原创 2022-02-06 10:21:16 · 607 阅读 · 0 评论 -
rust :字节跳动镜像设置
[source.crates-io]registry = “https://rsproxy.cn”具体在.cargo下config文件中:原创 2022-02-04 20:57:37 · 1648 阅读 · 0 评论 -
rust: error: linking with `cc` failed: exit code: 1
linux:cargo rustc -- -C link-arg=-nostartfileswindows:cargo rustc -- -C link-arg=-nostartfiles转载 2022-02-04 17:25:58 · 2150 阅读 · 0 评论 -
RUST: 学习宝典Rust Language Cheat Sheet->https://cheats.rs/
https://cheats.rs/原创 2022-01-01 11:36:33 · 672 阅读 · 0 评论 -
rust: linker-link-exe-not-found
https://stackoverflow.com/questions/55603111/unable-to-compile-rust-hello-world-on-windows-linker-link-exe-not-found/55603112#55603112原创 2021-12-18 11:28:24 · 432 阅读 · 0 评论 -
python : pandas库的后继者polars库
polars库是python的又一dataframe库,显然,在pandas库的光芒下,要上位是不容易的,必须有过硬的功夫。一、用法基本一致从介绍上看,两者有孪生相,用法和接口基本无二。至少大部分非常非常相似。估计很多只需要在import 这行改一行,估计就能用上了。安装:pip install polars 也可以通过镜像,这样快一些。二、速度polars优势明显import time import polars as plimport pandas as pdfile = r"C:原创 2021-12-14 19:35:27 · 5338 阅读 · 2 评论 -
Rust 中 Trait 的使用及实现分析
Rust 中 Trait 的使用及实现分析尘香 蚂蚁智能监控 今天使用方式 基本用法 静态派发 动态派发 impl trait 高阶用法 关联类型 Derive常见问题 向上转型(upcast) 向下转型(downcast) Object safety总结参考在 Rust 设计目标中,零成本抽象是非常重要的一条,它让 Rust 具备高级语言表达能力的转载 2021-05-07 13:18:07 · 3491 阅读 · 3 评论 -
PyO3: python调用rust代码尝试
PyO3功能很强大,是python和rust之间交互桥梁。今天主要试验一下python端调用rust端编译的代码库。说明:本文环境中在windos平台下。linux平台或其它平台请参看github上pyo3的说明。一、rust 端在rust端创建pyrust库文件:cargo new pyrust --lib同时在lib.rs文件中,写入以下代码:其中,#[pyfunction]是指写入rust方法,pyo3自动会转成python能调用的函数;#[pymodule]是指把这些函数放在一个mo原创 2021-04-25 11:41:24 · 5168 阅读 · 0 评论 -
Rust 碎碎念:【译】Arc 在 Rust 中是如何工作的
【译】Arc 在 Rust 中是如何工作的Praying公众号: Rust碎碎念原文标题:How Arc works in Rust原文链接:https://medium.com/@DylanKerler1/how-arc-works-in-rust-b06192acd0a6公众号: Rust 碎碎念翻译 by: Praying原子引用计数(Arc)类型是一种智能指针,它能够让你以线程安全的方式在线程间共享不可变数据。我还没有发现能够很好地解释它的工作原理的文章,所以我决定尝试来写一篇。(转载 2021-04-20 09:32:32 · 782 阅读 · 1 评论 -
透过 Rust 探索系统的本原:并发原语
https://zhuanlan.zhihu.com/p/365905573转载 2021-04-19 21:48:15 · 191 阅读 · 0 评论 -
透过 Rust 探索系统的本原:网络篇
https://zhuanlan.zhihu.com/p/365905512转载 2021-04-19 21:34:40 · 259 阅读 · 0 评论