У меня есть несколько макросов для уменьшения шаблона при определении определенных кортежей-структур формы:
macro_rules! new_type (($name:ident, $bytes:expr) => (
pub struct $name(pub [u8; $bytes]);
// some common operations on $name
));
Однако я хотел бы также документировать эти новые структуры. Лучше всего было бы, если бы я мог написать свою документацию прямо перед вызовом макроса.
/// A certain type
new_type!(CertainType, 42);
Однако, когда это произойдет, Rust не будет генерировать документацию для CertainType
.
Другой (не такой гибкий) вариант должен был бы сделать что-то вроде:
macro_rules! new_type (($name:ident, $bytes:expr) => (
/// Some more generic documentation for $name
pub struct $name(pub [u8; $bytes]);
// some common operations on $name
));
Однако при этом макрос Rust не расширяет токен $name
в комментарии к документации. Единственная альтернатива - написать очень общую документацию в макросе, но это приведет к тому, что моя библиотека будет намного хуже документирована, чем это могло бы быть.
Каковы ваши рекомендации по работе с этим? Лучшим решением для меня было бы написать конкретную документацию для каждого вызова макроса, но если бы это было невозможно, я был бы признателен за советы о том, как развернуть маркеры в комментариях к документации.