# moa_unsafe_list

[![crates.io](https://img.shields.io/crates/v/moa_unsafe_list.svg)](https://crates.io/crates/moa_unsafe_list)
[![docs.rs](https://docs.rs/moa_unsafe_list/badge.svg)](https://docs.rs/moa_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 moa_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
}
```
