gpt4 book ai didi

enums - 如何为枚举实现 quote::ToTokens?

转载 作者:行者123 更新时间:2023-11-29 08:00:28 25 4
gpt4 key购买 nike

我正在实现一个过程宏,我需要向外部提供我自己的结构。我需要为我的结构实现 quote::ToTokens 特性,但我不明白如何实现。我试过这段代码但没有成功。此代码可编译,但无效:

#[derive(Debug, Serialize, Clone)]
pub enum Enum {
A,
B,
}
impl quote::ToTokens for Enum {
fn to_tokens(&self, tokens: &mut quote::Tokens) {
tokens.append("Enum::B");
}
}

quote::ToTokens example不解释这个。

最佳答案

我认为您正在寻找类似的东西:

impl quote::ToTokens for Enum {
fn to_tokens(&self, tokens: &mut quote::Tokens) {
tokens.append("Enum");
tokens.append("::");
match *self {
Enum::A => tokens.append("A"),
Enum::B => tokens.append("B")
}
}
}

如果您担心枚举是如何导入的,那么您应该重新导入它以确保它不与其他任何内容冲突:

impl quote::ToTokens for Enum {
fn to_tokens(&self, tokens: &mut quote::Tokens) {
tokens.append("{");
tokens.append("use");
tokens.append_separated(&["module_name", "Enum"], "::");
tokens.append(";");
tokens.append("Enum");
tokens.append("::");
match *self {
Enum::A => tokens.append("A"),
Enum::B => tokens.append("B")
}
tokens.append("}");
}
}

将产生:

 { use module_name::Enum; Enum::A }

关于enums - 如何为枚举实现 quote::ToTokens?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42206417/

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