3
マクロでty
を使用すると、これはほとんどすべての場合に有効です。 しかし、新しいstruct
インスタンスを宣言するのに使用できないようです。マクロ内の型(ty)を使用してRustで構造体インスタンスを構築する方法は?
例:$my_type { some_member: some_value }
より包括的な例
macro_rules! generic_impl {
($my_type:ty) => {
impl $rect_ty {
pub fn flip(&self) -> $my_type { self.some_method() }
pub fn swap(&self, &other: $my_type) -> { self.some_swap_method(other) }
// so far so good!
// now our troubles start :(
pub fn create(&self) -> $my_type {
return $my_type { foo: 1, bar: 2, baz: 2 };
// ^^^^^^^^ this fails!!!
}
}
}
}
// example use
generic_impl(MyStruct);
generic_impl(MyOtherStruct);
エラーは次のとおりです。
error: expected expression, found `MyStruct`
は、私がimpl $my_type
を使用することはできませんexpr
手段にty
を変更します。 2倍の引数に渡すほかに
、一つの他のty
expr
:
マクロへty
引数に基づいて構造体を構築する方法はありますか?
ありがとうございます、見つかった 'tt'も動作します。 – ideasman42