Как получить поле из обобщения Rust?
Существует ли какой-то макрос для получения полей из обобщённых типов? Что я имею в виду: мне нужен макрос, который способен проверять существование поля, а затем отдавать значения этого поля.
Что-то типа этого:
struct Bar {
num: u8
}
fn foo<T>(bar: T) -> u8 {
let a: u8 = get_field!(bar, num);
a
}
fn main() {
let bar = Bar { num: 255 };
assert_eq!(foo(bar), 255)
}
Можно сделать и через трейты, но...
Ответы (1 шт):
Автор решения: mzabaluev
→ Ссылка
Макросы преобразуют только синтаксис, в результате подстановки должен получиться осмысленный Rust. Из обобщенного параметра в вашем примере нет способа получить значение поля какой-либо конкретной структуры, которая может быть в него подставлена.