# unsafe_list
[](https://crates.io/crates/unsafe_list)
[](https://docs.rs/unsafe_list)
Linux 风格侵入式双向链表,对标内核 `<linux/list.h>` 的 `list_head` 实现。
`#![no_std]`、零依赖,可在裸机 / 嵌入式 / 内核场景直接使用。
## 功能
- **O(1) 插入/删除/移动** — `list_add`、`list_del`、`list_move` 等
- **侵入式设计** — 节点嵌入数据结构,零额外分配
- **双端迭代器** — 支持 `Iterator` + `DoubleEndedIterator`
- **poison 检测** — 删除后指针置为哨兵值,辅助 use-after-free 排查
## 用法
```rust
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
}
```