batch-impl 0.2.0

A proc-macro library for batch generating trait impls with a powerful DSL
Documentation
# Changelog


## 0.2.0 (2026-07-19)


### 新功能


#### 关联类型简洁写法

- `TraitName<AssocType=value>` 语法:在 trait 泛型参数中指定关联类型绑定
- `<T> Iter<Item=T> Vec<T>` → 生成 `impl<T> Iter for Vec<T> { type Item = T; ... }`
- 支持多关联类型绑定:`Pair<First=T, Second=U>`
- 支持复杂类型绑定:`TupleAssoc<Output=(T, T)>`
- 关联类型可与 `^``-`、unsafe 任意组合

#### 独立/共享 body 合并

- `[A{bodyA}, B{bodyB}]{shared}` 语法:列表项可有独立 body,与共享 body 合并
- 共享 body 提供公共实现,独立 body 提供类型特定实现
- 合并策略:拼接(shared + independent)
- 支持多层嵌套:`[[A{...}, B{...}]{shared1}, C{...}]{shared2}`

#### 元组生成规则修改

- `()^N` → 生成带 N 个泛型参数的元组 `(A,B,...)`
- `(T)^N` → 生成长度为 N 的元组 `(T,T,...,T)`
- `(T1,T2)^N` → 生成长度为 N 的所有笛卡尔积组合
- 支持范围语法:`()^M..N``()^M..=N`

#### *const/*mut 指针支持

- `*const^T``*const T`
- `*mut^T``*mut T`
- 支持链式应用:`*const^Box^T``*const Box<T>`

#### 引用类修饰符特殊行为

- `&^A^B``&A<B>``&` 先绑定到 `A`,然后 `^B` 应用到结果)
- `&mut^A^B``&mut A<B>`
- `*const^A^B``*const A<B>`
- `*mut^A^B``*mut A<B>`

#### fn 关键字支持

- `fn^(A,B)``fn(A,B)`:fn 类型创建
- `fn(A,B)^T``fn(A,B)->T`:fn 类型追加返回类型
- `fn-(A,B)^N` → 生成 N 长度组合的 fn 类型

#### #[...] 属性支持

- `#[attr]^T` → 在 impl 块前添加属性
- `#[a]^[#[b]^B, #[c]^C]` → 生成带嵌套属性的 impl 块

#### 实现细节

- `ImplSpec` 新增 `assoc_bindings``attributes` 字段
- `PrefixItem` 新增 `ConstPtr``MutPtr``Fn``Attribute` 变体
- `parse_segment` 解析 `TraitName<Item=T>` 时分离关联类型绑定
- `expand_caret``expand_dash` 正确传递 `assoc_bindings`
- `generate_impl` 输出属性和关联类型绑定到 impl 块

#### 测试

- macro-test:113 个测试用例
- ds-test:15 个边界测试
- 新增测试:关联类型、`*const``*mut`、引用链式应用、fn 关键字、范围语法、属性支持
- 一致性测试:batch_impl 与 batch_trait 一致性验证
- 嵌套测试:多层嵌套 body 合并验证
- 并行测试:多功能并行使用验证

## 0.1.1 (2026-07-19)


### 新功能


#### 预填泛型追加

- `A<B>^C``A<B, C>`:容器带预填泛型时,`^` 追加参数而非生成 `A<B><C>`
- `HashMap<K>^V``HashMap<K, V>`:示例
- `[Box, Cow<'_>]^T``Box<T>, Cow<'_, T>`:列表支持
- `-` 运算符自动受益:`HashMap-u32-String``HashMap<u32, String>`

#### 实现细节

- 修改 `PrefixItem::Container` 结构体,增加 `prefill` 字段
- `parse_single_prefix` 支持识别 `Ident<...>` 模式
- `apply_caret` 支持预填泛型追加
- 新增 `append_to_generic_container` 函数处理 `-` 运算符

#### 文档更新

- README 添加优先级说明:`^` > `-` > `,`
- 函数注释补充预填泛型追加功能说明
- 移除 Planned 部分

#### 测试

- 新增 2 个测试用例验证预填泛型追加功能

## 0.1.0 (2026-07-19)


### 初始发布


#### 核心功能

- `#[batch_impl(...)]` 属性宏:为 trait 批量生成 impl 块
- `batch_trait!(...)` 函数式宏:对已声明的 trait 批量生成 impl

#### 运算符

- `^` 右结合运算符:泛型应用 `A^B``A<B>`
- `-` 左结合运算符:同 `^``A-B``A<B>`

#### 元组生成

- `()^N` 生成不同长度的元组实现
- `(<Bound>)^N` 生成带泛型约束的元组
- `(T1,T2)^N` 笛卡尔积生成
- `()^M..N``()^M..=N` 范围生成

#### 泛型支持

- impl 泛型:`<T>`, `<T: Clone>`, `<const N: usize>`
- trait 泛型:`TraitName<T>`
- 生命周期:`<'a, T: 'a>`
- 泛型继承:子项可省略泛型,自动继承父级

#### unsafe 支持

- `unsafe^T` 单条声明标记为 unsafe impl
- `unsafe trait` 全部 impl 自动 unsafe
- `batch_trait!(unsafe Trait: ...)` 部分 unsafe

#### 安全性

- 递归深度限制(128 层)
- 使用 `byte_range()` 生成稳定的位置后缀
- 笛卡尔积组合数上限(1024)

#### 错误处理

- 中文错误提示
- 保留原始 Span 信息
- `compile_error!` 而非 panic

#### 测试

- macro-test:99 个测试用例
- ds-test:15 个边界测试
- 覆盖:基础类型、泛型、元组、`^` 运算符、`-` 运算符、unsafe、特殊类型、关联类型、独立/共享 body