- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用时遇到问题 macro_rules!
.
我定义了一个 enum Test
和实现 fmt
对于枚举。
use core::fmt;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Test {
Foo(String),
Bar,
}
impl fmt::Display for Test {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Test::Foo(id) => write!(f, "Foo({})", id),
Test::Bar => write!(f, "Bar"),
}
}
}
print_test!
.
macro_rules! print_test {
($test:pat) => {
println!("the Test is {}", $test);
};
}
error: expected expression, found `Bar`
--> src/main.rs:53:36
|
53 | println!("the Test is {}", $test);
| ^^^^^ expected expression
...
57 | print_test!(Bar);
| ----------------- in this macro invocation
mod test {
use core::fmt;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Test {
Foo(String),
Bar,
}
impl fmt::Display for Test {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Test::Foo(id) => write!(f, "Foo({})", id),
Test::Bar => write!(f, "Bar"),
}
}
}
}
use test::Test::*;
macro_rules! print_test {
($test:pat) => {
println!("the Test is {}", $test);
};
}
fn main() {
let a=String::from ("test");
print_test!(Bar);
}
最佳答案
只需更改 pat
至 expr
可以解决问题。
macro_rules! print_test {
($test:expr) => {
println!("{}",$test);
};
}
关于rust - 怎么格式化! rust 宏规则中的 pat(enum),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61768445/
尝试一个简单的解析器组合器,我遇到了编译错误。 我想将“Smith, Joe”解析为其 Name 对象,如 Name(Joe, Smith)。我想很简单。 这是与此相关的代码: import
部署组何时会因配置的个人访问 token (PAT) 过期或重新生成而停止工作? 如果我重新生成 PAT,是否需要更新已部署的代理,例如用新的 PAT 重新配置它们? 如果我只是编辑 PAT,更新到期
假设,您有一个 PAT: protocol PAT { associatedtype T func provide() -> T } 还有另一个协议(protocol),使用该协议(p
我需要计算Pat的数量在 haskell 中 Module 。我知道最简单的方法是在 AST 的每个级别上进行模式匹配,这将产生一个看起来像整个 AST 的巨大函数。我相信有某种方法可以利用像 Fun
我有一个适用于任何类型的可比较模型的简单协议(protocol): protocol PSDiffableModelProtocol: Hashable { var identifier: UUI
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 4 年前。 Improve
当我阅读时the macro part of The Scheme Programming Language ,它提到当您尝试使用 define-syntax 定义语法扩展时,您应该使用 pat ..
我想出如何保护特定路线的唯一方法,例如/secret 但 / 使用 pat是这样的: app := pat.New() app.Get("/", hello) // The should be pub
我们希望将我们的自定义步骤从 XAML 构建迁移到本地 TFS2015 中的新构建任务。我安装了 NodeJS 和 tfx-cli,但是当 tfx-cli 想要连接到 TFS 时,我需要提供 pat(
在 L 系统表示法中,模式看起来像这样: A(a)B(b, c) if a+b+c B(a+b, a+c)A(x+a+b+c) 我正在尝试编写 Rust 宏来扩展它们。所以我有这样的东西: macr
我们有一个生成器,可以使用特定的 AD 帐户生成代码并将其推送到我们的本地 Git 存储库之一。 有没有一种方法可以推送到 Azure Repos,而无需使用链接到个人的 PAT/SSH key ?因
我想声明类似于以下的通用协议(protocol): protocol Factory { func createWidget(_ t: T) -> TWidget where TWid
我想在用户空间进程中将一段内存设置为不可缓存(Linux,x86-86)。 This question接近,但只提到与物理内存一起工作的 MTRR 寄存器。我想使用 PAT 表来执行此操作,因为它们提
一个密码没问题 我想“安全地”存储我的凭据以供 git 使用所以我按照指示做了 here .这样我就不必每次都输入密码/PAT,我执行任何 git 操作。 安装 libsecret使用 sudo ap
我在使用时遇到问题 macro_rules! . 我定义了一个 enum Test和实现 fmt对于枚举。 use core::fmt; #[derive(Debug, Clone, Par
我有工作本地代理池(部署),其中已经有 4 个代理。他们运行正常,但我需要添加更多代理。但是我不知道用于创建这些代理的 PAT。我现在使用不同的帐户创建另一个代理,并且创建正常。但是使用代理池(部署)
我已经从 azure devops 创建了一个 PAT。现在我已经创建了一个 react 应用程序来处理所有的 api 逻辑。我有一个登录屏幕,现在用户需要输入 DEVOPS_TOKEN,ORGANI
我已经从 azure devops 创建了一个 PAT。现在我已经创建了一个 react 应用程序来处理所有的 api 逻辑。我有一个登录屏幕,现在用户需要输入 DEVOPS_TOKEN,ORGANI
我正在尝试使用类型删除来创建 Repository可以遵循的协议(protocol)(类似于 Swift 的 AnyCollection )。该协议(protocol)需要包装在类型删除的类中,因为它
我不明白为什么会失败: import Foundation import simd protocol TestProtocol { associatedtype ElementType
我是一名优秀的程序员,十分优秀!