unsafe_list 0.1.58

Linux 风格侵入式双向链表
Documentation

unsafe_list

crates.io docs.rs

Linux 风格侵入式双向链表,对标内核 <linux/list.h>list_head 实现。

#![no_std]、零依赖,可在裸机 / 嵌入式 / 内核场景直接使用。

功能

  • O(1) 插入/删除/移动list_addlist_dellist_move
  • 侵入式设计 — 节点嵌入数据结构,零额外分配
  • 双端迭代器 — 支持 Iterator + DoubleEndedIterator
  • poison 检测 — 删除后指针置为哨兵值,辅助 use-after-free 排查

用法

use unsafe_list::{UnsafeListHead, UnsafeListNode, define_unsafe_list_head};

struct Task {
    pid: usize,
    list: UnsafeListNode<Task>,
}

// 定义并初始化链表头
define_unsafe_list_head!(head, Task, list);

let mut t1 = Task { pid: 1, list: UnsafeListNode::new() };
let mut t2 = Task { pid: 2, list: UnsafeListNode::new() };

unsafe {
    head.list_add_tail(&mut t1.list);
    head.list_add_tail(&mut t2.list);
}

for task in &head {
    // pid: 1, 2
}