You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求可自动装箱大型枚举变体的Rust crate

解决Clippy result_large_err 警告的自动装箱枚举宏

你要找的是large_enum_variant这个proc-macro crate,它完全符合你的需求——通过derive宏自动检测枚举变体的大小,将超过阈值的变体用Box包裹,完美解决Clippy的result_large_err警告。

使用示例

  1. 先在Cargo.toml中添加依赖:
large_enum_variant = "0.1"
  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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:05:35