2016-02-21 21 views
8

A partire da Rust 1.6.0, i pattern nella macro hanno un'implementazione nascosta.C'è un modo per nascondere uno schema macro di Ruggine dai documenti?

C'è un modo per nascondere alcuni dei modelli dai documenti generati dal carico? O sono rimasto con l'estrazione per separare le macro e aggiungere #[doc(hidden)] a quelli?

macro_rules! mc { 
    /// hide this 
    (...) => (...); 
} 
+1

Per chiarire, ci sono * altri * motivi che non vuoi nascosti? – Shepmaster

+0

Quelli che sono normali, di uso pubblico e dovrebbero apparire nei documenti. – dragostis

risposta

3

Poiché non v'è altra risposta, credo che questa è la soluzione ottimale:

/// Not meant to be called directly 
#[doc(hidden)] 
#[macro_export] 
macro_rules! hidden { 
    ($hidden_rule1:expr) => { ... }; 
    ($hidden_rule2:expr) => { ... }; 
    ... 
} 

#[macro_export] 
macro_rules! public { 
    ($public:expr) => (hidden!($public)); 
} 

Stai utilizzando un separato hidden macro (che probabilmente deve essere pubblico), ma che non è parte della documentazione. Tutte le regole che dovrebbero essere nascoste saranno nascoste e quella pubblica sarà visibile nella macro public che fa parte della documentazione.

+2

Nota che se un utente importa in modo esplicito la macro ('# [macro_use (pubblico)] cassa esterna ...') riceverà un errore e dovrà anche includere 'nascosto':' # [macro_use (pubblico, nascosto) ] cassa esterna ... '. – Mike