gpt4 book ai didi

generics - 具有标记特征的Rust meta/复合结构

转载 作者:行者123 更新时间:2023-12-03 11:48:25 25 4
gpt4 key购买 nike

我想使用带有共享“主题”(每个主题发布一种类型)的pubsub机制在代码上下文之间共享多个现有结构。许多主题重复使用相同的结构类型,因此我想以某种方式标记原始结构以将其用于这些主题。就像是:

trait TopicMeta {
const TOPIC: &'static str;
}

struct Point {
x: u32,
y: u32,
}

impl TopicMeta for Point as HomeLocation {
const TOPIC: &'static str = "home";
}

impl TopicMeta for Point as RoverLocation {
const TOPIC: &'static str = "rover";
}
但是,据我所知没有办法吗?
其他选项:
  • 我可以为每个主题创建一个新类型,除了其名称外,它与原始Point结构相同。
  • 我可以使用包含Point的内部字段为每个主题创建一个包装对象。

  • 有什么建议?

    最佳答案

    一种常见的方法是在您的类型中添加一个字段,并使用struct单位作为标签:

    trait TopicMeta {
    const TOPIC: &'static str;
    }

    struct Point<T> {
    x: u32,
    y: u32,
    tag: T,
    }

    struct HomeLocation;
    struct RoverLocation;

    impl TopicMeta for Point<HomeLocation> {
    const TOPIC: &'static str = "home";
    }

    impl TopicMeta for Point<RoverLocation> {
    const TOPIC: &'static str = "rover";
    }

    关于generics - 具有标记特征的Rust meta/复合结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62520186/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com