【发布时间】:2015-09-28 06:52:14
【问题描述】:
我需要获取宏重复元素的索引来编写下一个代码:
struct A {
data: [i32; 3]
}
macro_rules! tst {
( $( $n:ident ),* ) => {
impl A {
$(
fn $n(self) -> i32 {
self.data[?] // here I need the index
}
),*
}
}
}
我知道一种方法:告诉用户手写索引:
( $( $i:ident => $n:ident ),* )
但是有没有更优雅的方式不需要用户的操作?
【问题讨论】:
-
你在做什么听起来很可能是个坏主意。您应该在可行的情况下支持其他设计;例如制作
struct A { one: i32, two: i32, three: i32 }。 -
@ChrisMorgan。事实上,它与向量的实现有关,比如四元数,其中每种类型都有不同的长度并需要不同的访问器。我认为如果我对它们都使用一个代码,它可以简化工作。为什么你认为这是一个坏主意?
-
我无法理解你实际上想用这个实现什么。你能分享一个完整的代码示例吗?
-
@ChrisMorgan,好吧,现在它只是一个概念,所以不存在我可以分享的真实代码。当(或如果)我按照我要求的方式编写它时,我可以在完成后分享它。