寻求可自动装箱大型枚举变体的Rust crate
解决Clippy
result_large_err 警告的自动装箱枚举宏 你要找的是large_enum_variant这个proc-macro crate,它完全符合你的需求——通过derive宏自动检测枚举变体的大小,将超过阈值的变体用Box包裹,完美解决Clippy的result_large_err警告。
使用示例
- 先在
Cargo.toml中添加依赖:
large_enum_variant = "0.1"
- 在代码中为枚举派生特性:
use large_enum_variant::LargeEnumVariant; #[derive(LargeEnumVariant)] // 可选:自定义大小阈值,默认是64字节 #[large_enum_variant(threshold = 128)] pub enum ParseError { UnparsedBytes([u8; 512]), UnexpectedEof, }
这段代码会被编译转换为:
pub enum ParseError { UnparsedBytes(Box<[u8; 512]>), UnexpectedEof, }
补充说明
这个crate的核心是在编译期计算每个枚举变体的内存占用,当超过设定的阈值时自动为变体添加Box包装,无需手动修改代码。如果你需要更灵活的装箱逻辑,也可以试试auto_box crate,它的AutoBox derive宏也能实现类似功能,但large_enum_variant更专注于枚举变体的大小判断,更贴合你解决result_large_err的场景。
内容的提问来源于stack exchange,提问作者ksldenity
相关产品推荐
相关产品推荐

