分类归档:rust

Rust Miri 完全指南:如何使用和用好 Miri

前言 在 Rust 的世界里,虽然编译器已经帮我们解决了大部分内存安全问题,但当你开始编写 unsafe 代码时,就进入了一个编译器无法完全保护你的领域。这时候,Miri 就成为了你最重要的安全网。 正如一位开发者在 Rust 重写项目中所说:"如果你在编写 unsafe 代码时没有使用 Miri

阅读全文 →

Rust 的函数指针比较:fn_addr_eq

第一次看到 Rust 标准库中的 ptr::fn_addr_eq 函数,第一反应是:这不就是 == 的别名吗?为什么要专门为函数指针比较创建一个新函数? 表面上的等价性 从功能角度看,fn_addr_eq(f, g) 确实等同于 f == g: use std::ptr;

阅读全文 →

Rust - SparseList<T>

SparseList<T>实现了一个稀疏列表数据结构,它具有以下特点: 核心概念 维护一个固定大小的底层数组 (Vec<Option<T>>)

阅读全文 →

Rust - Sized还是?Sized

动态大小类型 DST 读者大大们之前学过的几乎所有类型,都是固定大小的类型,包括集合 Vec、String 和 HashMap 等,而动态大小类型刚好与之相反:编译器无法在编译期得知该类型值的大小,只有到了程序运行时,才能动态获知。对于动态类型,我们使用 DST(dynamically sized

阅读全文 →

Rust - 纯Safe双向链表

该代码仅仅提供学习与交流,你要是和我考究性能,你开心就好。 Rust实现 struct Node<T> { data: Box<T>, head: Option<Arc<Mutex<Node<T>>>>, next: Option<Arc<Mutex<Node<T>>>>,

阅读全文 →

Rust - MyLinkedList

闲来无事写点垃圾... 第一版 Code main-gwcm.rs Output Time elapsed: 79.2771ms 好慢因为我用C++实现的才用50ms左右!main.cpp 优化版 main.rs 美美实现和C++一样的速度! Output

阅读全文 →

Rust - Futures library

Futures is a library for writing asynchronous code. official website 导入库 futures = { version = "0.3.30", features = ["thread-pool"] } 开始 创建一个线程池 use

阅读全文 →