Il sistema di moduli in Rust si basa sulla parola chiave mod. I moduli permettono di suddividere logicamente il codice in file e spazi dei nomi. Punti chiave:
pub rende l'elemento pubblico per l'intero albero dei moduli.pub(crate) è accessibile all'interno di tutto il crate (cioè della libreria/progetto).use mod_name::item) e alias.Per progetti di grandi dimensioni, si consiglia di utilizzare un albero di moduli descrivendo le interfacce pubbliche solo attraverso lib.rs o main.rs, mentre il resto rimane privato:
mod network; mod storage; pub use network::api;
Se una struttura è dichiarata come pub, sarà accessibile ad altri crate?
Risposta: No, non è sufficiente semplicemente contrassegnare la struct come pub. È necessario anche che sia dichiarata in un modulo aperto ad altri crate (pub mod), e i campi della struct devono essere pubblici per consentire l'accesso diretto ad essi.
Esempio:
mod foo { pub struct Bar; } // Bar non è visibile al di fuori del crate, poiché foo è privato
Storia
Storia
Storia
Molti principianti creano una struttura pub, ma lasciano i campi private, rendendo impossibile la loro inizializzazione al di fuori del modulo. Di conseguenza, una funzione di un altro modulo non poteva creare direttamente la struttura, causando errori fino a quando non sono stati resi pubblici i campi o i costruttori.