作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在实现一个过程宏,我需要向外部提供我自己的结构。我需要为我的结构实现 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/
我正在实现一个过程宏,我需要向外部提供我自己的结构。我需要为我的结构实现 quote::ToTokens 特性,但我不明白如何实现。我试过这段代码但没有成功。此代码可编译,但无效: #[derive(
我遇到了这个错误,并认为我非常笨拙的解决方法可能对某些人有用。 假设我有一些代码 (playground)看起来像这样: #[macro_use] extern crate quote; extern
我是一名优秀的程序员,十分优秀!