Sto provando a creare una libreria e voglio includere alcuni file binari (o di testo) che avranno dati che verranno analizzati in fase di esecuzione.C'è un modo per includere file binari o di testo in una libreria Rust?
La mia intenzione è di avere il controllo di questi file, aggiornarli costantemente e modificare la versione della libreria in ogni aggiornamento.
È possibile tramite carico? In tal caso, come posso accedere a questi file dalla mia biblioteca?
Una soluzione che ho pensato è quella di includere alcuni file .rs
con strutture e/o costanti come &str
che memorizzeranno i dati ma trovo un po 'brutto
EDIT:
ho cambiato la risposta accettata per quello che si adatta di più il mio caso, ma dare un'occhiata a Shepmaster's answer come questo può essere più adatto nel vostro caso.
** che verrà analizzato in fase di esecuzione ** => perché? Poiché i dati sono statici, sarebbe più efficiente memorizzare i dati già analizzati nel binario piuttosto che analizzarli in fase di esecuzione. La ruggine è abbastanza limitata in ciò che può rappresentare in fase di compilazione (molto sfortunatamente), tuttavia si menziona il mantenimento di un file '.rs', quindi sembra possibile nel tuo caso. Se questo è il caso, allora consiglio di usare un file 'build.rs', che è uno" script di build "in Rust che ti permetterà di analizzare i file sorgente e generare file' .rs' prima di costruire " corretta". –
Per essere più precisi, questi dati sono già analizzati e devono essere spostati nelle strutture, come 'HashMap', che non può essere inizializzato (almeno non senza usare la gabbia' lazy_static'). Questo è il motivo per cui ho bisogno di "analizzarli" in fase di runtime. Averli in un file binario (o di testo) rende più facile sostituire solo questo file quando voglio aggiornare i dati. Comunque usare 'build.rs' in combinazione con la gabbia' lazy_static' suona come un'alternativa migliore e farò un tentativo. Grazie per il suggerimento! – Otobo