funlog 0.2.1

A procedural macro for tracing Rust function calls
Documentation
# Funlog 错误提示改进总结

## 改进概述

我已经成功改进了 funlog 宏的错误提示系统,使其更加人性化和用户友好。这次改进主要集中在以下几个方面:

## 主要改进

### 1. 🌏 中文错误信息
- 将所有错误信息本地化为中文
- 使用更友好的语言而不是技术术语
- 提供清晰易懂的错误描述

### 2. 💡 智能建议系统
- 每个错误都包含具体的修复建议
- 提供正确的用法示例
- 根据上下文给出定制化的帮助信息

### 3. 🔍 拼写错误检测
- 实现了编辑距离算法来检测拼写错误
- 当用户输入错误的属性名时,自动建议最相似的正确选项
- 支持常见的拼写错误模式识别

### 4. ⚠️ 冲突检测机制
- 检测并报告配置冲突(如同时使用多个日志级别)
- 明确指出哪些选项不能同时使用
- 提供解决冲突的具体建议

### 5. 📋 上下文感知错误
- 错误信息包含函数的参数信息
- 根据具体的函数签名提供定制化建议
- 显示可用参数列表和正确的用法格式

## 技术实现

### 错误类型扩展
```rust
#[derive(Debug, Clone)]
pub enum ConfigError {
    AlreadySet(&'static str),
    InvalidParameter { param: String, available: Vec<String> },
    InvalidAttribute { attr: String, suggestion: Option<String> },
    ParseError(String),
    ConflictingOptions { option1: String, option2: String },
    MissingFunction,
    InvalidParameterSyntax { param: String, expected: String },
}
```

### 智能建议算法
- 实现了 Levenshtein 距离算法
- 支持子字符串匹配
- 提供最相似的正确选项建议

### 冲突检测逻辑
- 在解析过程中跟踪所有配置选项
- 检测不兼容的配置组合
- 提供清晰的冲突说明

## 错误信息示例

### 重复配置错误
```
funlog 配置冲突: 'debug' 和 'info' 不能同时使用
💡 提示: 请选择其中一个选项
```

### 无效参数错误
```
funlog 参数错误: 参数 'nonexistent' 不存在
💡 提示: 可用的参数有: existing, another
   正确用法: #[funlog(params(existing, another))]
```

### 拼写错误建议
```
funlog 配置错误: 未知的配置选项 'debgu'
💡 提示: 你是想使用 'debug' 吗?
📖 可用的配置选项:
   日志级别: print, trace, debug, info, warn, error
   参数控制: all, none, params(参数名...)
   位置控制: onStart, onEnd, onStartEnd
   返回值: retVal
```

## 文件变更

### 核心文件
- `src/error.rs` - 扩展了错误类型和显示格式
- `src/config_builder.rs` - 改进了解析逻辑和错误检测

### 测试文件
- `tests/error_messages_test.rs` - 验证正确用法的测试
- `tests/test_error_improvements.rs` - 错误处理改进的测试
- `examples/error_examples.rs` - 错误示例演示

### 文档文件
- `ERROR_HANDLING.md` - 详细的错误处理文档
- `IMPROVEMENT_SUMMARY.md` - 本改进总结
- `CHANGELOG.md` - 更新了版本变更记录

## 版本更新

- 版本号从 `0.2.0` 升级到 `0.2.1`
- 更新了 `Cargo.toml``CHANGELOG.md`

## 测试验证

所有测试都通过,包括:
- 18 个现有测试用例
- 2 个新增的错误处理测试
- 完整的功能回归测试

## 用户体验改进

### 之前的错误信息
```
Invalid parameter: nonexistent, valid parameters: ["existing"]
```

### 改进后的错误信息
```
funlog 参数错误: 参数 'nonexistent' 不存在
💡 提示: 可用的参数有: existing
   正确用法: #[funlog(params(existing))]
```

## 未来扩展

这次改进为未来的功能扩展奠定了基础:
1. 更智能的建议算法
2. 自动修复功能
3. IDE 集成支持
4. 多语言错误信息

## 总结

通过这次改进,funlog 宏现在提供了:
- 更友好的中文错误信息
- 智能的拼写建议
- 清晰的冲突检测
- 具体的修复建议
- 上下文感知的帮助信息

这些改进将显著提升用户在使用 funlog 宏时的体验,减少调试时间,提高开发效率。