gpt4 book ai didi

rust - 使用rust macro_rules! : How to write lifetimes?

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

我正在尝试在宏中创建生命周期通用的函数。外面没有什么花哨的,只是一个硬编码的局部函数:

macro_rules! generate_parse_function {
($rule_name:ident, $parse_expr:tt) => {
fn $rule_name<'a>(code: &'a str) -> (Option<Ast>, &'a str) {
(Ast::$rule_name, $parse_expr)
}
};
}
但是无论我做什么,都会这样显示:
fn nil< 'a>(code: & 'astr) -> (Option<Ast>, & 'astr){
(Ast::nil,"NIL")
}
'a之前有一个空格(可能是或不是问题),并且 astr之间的空格已删除(这肯定是一个问题)。我在互联网上找不到任何有关此的信息,但这一定是一种常见的情况。有人知道该怎么办吗?

最佳答案

奇怪的是,这似乎是rust-analyzer中的错误。它报告了错误的结果,但是当我手动运行cargo-expand时,我得到了正确的结果(如@eggyal所指出的)。

关于rust - 使用rust macro_rules! : How to write lifetimes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63332248/

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