Implementar fmt :: Display para Vec <T>
Eu quero implementar ofmt::Display
para uma estrutura aninhada comumente usada no meu código.
// The root structure
pub struct WhisperFile<'a> {
pub path: &'a str,
pub handle: RefCell<File>,
pub header: Header
}
pub struct Header{
pub metadata: metadata::Metadata,
pub archive_infos: Vec<archive_info::ArchiveInfo>
}
pub struct Metadata {
// SNIP
}
pub struct ArchiveInfo {
// SNIP
}
Como você pode ver, essa é uma árvore de dados não trivial. oarchive_infos
propriedade emHeader
pode ser bastante longo quando apresentado como uma linha.
Eu gostaria de emitir algo ao longo das linhas de
WhisperFile ({PATH})
Metadata
...
ArchiveInfo (0)
...
ArchiveInfo (N)
...
Mas quando tento exibirVec<ArchiveInfo>
Entendo que o monitor não está implementado. Eu posso implementarfmt::Display
paraArchiveInfo
mas isso não é suficiente desdefmt::Display
não está implementado para o contêiner paiVec
. Se eu implementar fmt :: Display forcollections::vec::Vec<ArchiveInfo>
eu recebothe impl does not reference any types defined in this crate; only traits defined in the current crate can be implemented for arbitrary types
.
Eu tentei iterar pelo vec e chamarwrite!()
mas não consegui descobrir como deveria ser o fluxo de controle. eu acho quewrite!()
precisa ser o valor de retorno da função, mas isso é interrompido com várias chamadas.
Como posso imprimir um Vec das minhas estruturas?