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

如何在Rust的Newtype模式下获取内部结构体的公开常量?

在Newtype模式下获取内部结构体的公开常量

可行,但需要手动在Newtype的实现块中重新导出并包装内部结构体的常量。

因为MyVersion是独立的新类型,不会自动继承内部Version的关联常量,所以需要显式定义对应的常量,将内部Version的常量实例包裹为MyVersion的实例:

#[derive(PartialEq)]
pub struct Version(u32);
impl Version {
    pub const v0: Self = Self(0);
    pub const v1: Self = Self(1);
}

#[derive(PartialEq)]
pub struct MyVersion(Version);

impl MyVersion {
    // 重新导出并包装内部常量
    pub const v0: Self = Self(Version::v0);
    pub const v1: Self = Self(Version::v1);
}

fn main() {
    // 验证是否匹配
    assert_eq!(MyVersion::v0, MyVersion(Version::v0));
}

如果内部结构体有大量需要导出的常量,可以通过Rust宏来自动生成这些定义,避免重复代码;若常量数量较少,手动定义会更直观简洁。

内容的提问来源于stack exchange,提问作者Leśny Rumcajs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:10:15