gpt4 book ai didi

rust - 处理 macro_rules 中的可选模式

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

<分区>

我目前正在努力处理一个用例,我想在其中实现以下目标:

这是一个简化版本。基本上,我会有一个宏来将自定义格式转换为函数

example!(
name, // is an ident, mandatory
<expr1>, // is an expr, optional
[expr2], // is an expr, optional
)

name(Some(expr1), Some(expr2)) // my_macro!(name, <expr1>, [expr2])
name(None, Some(expr2)) // my_macro!(name, [expr2])
name(Some(expr1), None) // my_macro!(name, <expr1>)
name(None, None) // my_macro!(name)

我知道我可以定义多个模式来表示案例 1 到案例 4,并提供适当的模板。但是,如果我想知道是否有更智能的方法或一些系统内置宏(例如 stringify!)可以处理如下内容:

#[macro_export]
macro_rules! example {
($name:ident, $(($expr1:expr)),? $([$expr2:expr]),?) => {

let expr_1 = Some( $( $expr1 )? ) // or None
let expr_2 = Some( $( $expr2 )? ) // or None

name(expr_1, expr_2)
}
}

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