自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

老码

老码的博客

  • 博客(18)
  • 收藏
  • 关注

原创 Rust中自定义Debug调试输出

使用 write!拼接格式x: i32,y: i32,write!println!("{:?}", p);使用 f.debug_struct() 构建输出x: i32,y: i32,.finish()println!("{:?}", p);• fmt::Debug 是 Rust 中的调试格式化工具,用于 {:?} 打印。• 可以通过 #[derive(Debug)] 自动生成,也可以手动实现以满足自定义需求。

2024-12-16 19:11:02 773

原创 Rust中<‘_>是什么意思

2024-12-16 18:58:11 774

原创 Rust中用enum实现多参数Hook机制

• 核心思路:利用 enum 表达多种输入和输出类型,配合模式匹配实现多参数和多逻辑分支的 Hook 机制。• 扩展性强:通过新增枚举变体,可以轻松支持更多的输入和返回值类型。• 适用场景:• 插件系统• 事件驱动架构• 动态业务逻辑处理。

2024-12-15 00:09:12 1150

原创 Rust库之anyhow

在 Rust 中,anyhow 是一个流行的库,提供简单易用的错误处理功能,尤其适合处理复杂或通用的错误场景。它是基于 std::error::Error 的一个轻量级包装器,能让错误管理更高效。

2024-12-07 23:28:07 585

原创 Rust包之once_cell

在 Rust 中,once_cell 是一个非常有用的 crate,用于实现惰性初始化(lazy initialization)的单例模式。它允许某些值只被初始化一次,并且之后始终保持不变。该功能在需要全局变量或延迟计算的情况下非常实用。

2024-12-06 22:25:05 1120

原创 Rust中Vec<u8>和&[u8]有什么区别

Vec 和 &[u8] 是 Rust 中两种表示字节序列的不同类型,它们的区别主要体现在 所有权、可变性 和 内存管理 等方面。• Vec 有容量(capacity)和长度(len),容量可以大于长度。不涉及分配内存,操作开销低,适合用于高效的只读场景。• 是对字节切片的不可变引用,表示一段连续的内存。• 不拥有内存,指向的底层数据由其他对象管理。• 只是指向现有的内存,长度等于引用的范围。只是对已有数据的借用,不会参与内存管理。• 数据大小固定,不需要动态扩展。• 需要独立管理数据的生命周期。

2024-12-04 11:14:41 622

原创 Rust中BytesMut是什么?

BytesMut 是 Rust 中 bytes crate 提供的一个数据结构,表示一个高效的、可变的字节缓冲区。它常用于处理网络数据或其他需要灵活字节序列操作的场景,比如在异步 I/O 中。

2024-12-03 15:00:34 569

原创 Rust 的异步 I/O 编程中read和read_buf区别

在 Rust 的异步 I/O 编程中,tokio::io::AsyncReadExt::read 和 tokio::io::AsyncReadExt::read_buf 都是用于从异步流中读取数据的方法,但它们的使用方式和场景略有不同。

2024-11-28 21:08:58 708

原创 Rus中.to_owned()有什么作用?

• .to_owned() 是一种便捷的方法,用于从引用创建一个新的拥有所有权的实例。• 适用于 str → String,切片 → Vec 等场景。• 对于已经拥有所有权的数据类型,使用 .clone() 更加直观。

2024-11-27 00:07:14 711

原创 Rust中怎样实现链式调用?

在 Rust 中,链式调用是通过方法调用返回 self 或者 &self/&mut self 来实现的。这种方式允许多个方法在一行内连续调用,非常适合构建器模式或函数式风格的代码。

2024-11-26 21:48:21 724

原创 Rust的flume库使用教程

flume 是一个高性能的 Rust 消息通道(channel)库,类似于标准库中的 std::sync::mpsc,但提供了更多功能、更好的性能和异步支持。flume 可以在多线程和异步环境中传递消息,常用于线程间通信、任务分发等场景。

2024-11-25 15:03:11 402

原创 Rust的slab库使用教程

slab 提供了一个固定大小的对象存储(Slab),其行为类似于一个动态分配的数组:• 每次插入都会返回一个唯一的索引(usize)。• 通过索引可以快速访问或移除对象。• 内部会自动重用被移除的存储槽,减少内存分配的开销。slab 是一个轻量级、高性能的工具,非常适合管理固定大小的资源集合,尤其是在网络编程和事件驱动架构中。通过其独特的固定槽和索引机制,slab 可以有效减少内存分配成本,同时提供简单直观的 API,帮助开发者编写更高效的代码。

2024-11-25 14:40:55 1826

原创 Rust标准库Default特性是什么?

• 只有一个方法:default。• 返回值是类型本身的一个实例。• 通常用来提供一个合理的初始值。为结构体实现x: i32,y: f64,z: String,println!手动实现 Default有时你需要更复杂的默认值,此时可以手动实现 Default:x: i32,y: f64,println!• Default 提供一种统一的方法来生成合理的默认值。• 可以为标准类型直接使用,也可以为自定义类型实现。

2024-11-22 08:51:47 488

原创 Rust中std::marker::PhantomData是什么?

std::marker::PhantomData 是 Rust 中的一个零大小类型(zero-sized type,ZST),用于类型系统标记,尤其是在泛型类型中。它本身不占用任何内存,但可以帮助编译器进行类型检查或声明所有权和生命周期关系。

2024-11-22 08:41:02 479

原创 Rust标准库std::env模块常用方法

std::env 是 Rust 标准库中与环境变量、当前进程、工作目录等相关的模块。它提供了在程序运行时与操作系统环境交互的功能。

2024-11-21 21:42:21 461

原创 Rust中#[derive]的作用是什么?

在 Rust 中,#[derive] 是一个属性,用于自动为类型生成常见的实现,比如 Clone、Debug 等。它能极大地减少重复代码,同时确保实现的正确性和一致性。

2024-11-21 19:46:48 403

原创 Rust中macro_rules!怎么使用?

是 Rust 编程语言中用于定义宏的关键字。宏是一种元编程工具,允许你通过参数化代码片段,生成重复或动态的代码,从而提高代码的可读性和重用性。

2024-11-21 15:12:46 262

原创 Rust中正确使用unwrap()处理Option 和 Result

unwrap 的作用:解包 Option 或 Result,获取内部值。如果为空或错误,会触发 panic。避免滥用 unwrap:使用替代方法(如 unwrap_or、expect、match)。确保在安全、逻辑明确的场景下使用 unwrap。unwrap() 是一种简单直接的方法,但在实际开发中,需要谨慎对待,避免因其导致程序不必要的崩溃。

2024-11-20 14:40:13 1023

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除